os.path.join and lists

Steven D. Majewski sdm7g at Virginia.EDU
Wed Oct 17 21:48:23 CEST 2001


On Wed, 17 Oct 2001, Oleg Broytmann wrote:

> On Wed, Oct 17, 2001 at 07:01:20PM +0100, Dave Swegen wrote:
> > foo = os.path.join(bar[1:2], "bob")
> 
> foo = os.path.join(bar[1:2] + ["bob"]) # untested
> 

untested and unworking. It still ends up trying to concatenate
different types ( strings and lists ). All the args must be strings 
as there's a literal string in posixpath.py:
	path = path + '/' + b


Any of the following ought to work:

	# concat "bob" to the list and then join the list using pathsep:
	os.pathsep.join( bar[1:2] + ["bob"] )  

	# join only strings  slice  bar[1:2] == [ bar[1] ] 
	os.path.join( bar[1], "bob" )	

	# but if [1:2] could be any arbitrary slice, then apply
	# join to that list and then join "bob" separately:
	os.path.join( apply( os.path.join, bar[1:2] ), "bob" )


-- Steve Majewski






More information about the Python-list mailing list