[Python-Dev] / as path join operator

Ian Bicking ianb at colorstudy.com
Thu Jan 26 04:02:07 CET 2006


Steven Bethard wrote:
> My only fear with the / operator is that we'll end up with the same
> problems we have for using % in string formatting -- the order of
> operations might not be what users expect. Since join is conceptually
> an addition-like operator, I would expect:
>> Path('home') / 'a' * 5
>> to give me:
>> home/aaaaa
>> If I understand it right, it would actually give me something like:
>> home/ahome/ahome/ahome/ahome/a

Both of these examples are rather silly, of course ;) There's two 
operators currently used commonly with strings (that I assume Path would 
inherit): + and %. Both actually make sense with paths too.
 filename_template = '%(USER)s.conf'
 p = Path('/conf') / filename_template % os.environ
which means:
 p = (Path('/conf') / filename_template) % os.environ
But probably the opposite is intended. Still, it will usually be 
harmless. Which is sometimes worse than usually harmful.
+ seems completely innocuous, though:
 ext = '.jpg'
 name = fields['name']
 image = Path('/images') / name + ext
It doesn't really matter what order it happens in there. Assuming 
concatenation results in a new Path object, not a str.
-- 
Ian Bicking | ianb at colorstudy.com | http://blog.ianbicking.org


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /