Behaviour of os.path.join

BlindAnagram blindanagram at nowhere.com
Tue May 26 13:07:14 EDT 2020


On 26/05/2020 17:46, MRAB wrote:
> On 2020-05-26 16:48, BlindAnagram wrote:
>> On 26/05/2020 16:22, Ben Bacarisse wrote:
>>> BlindAnagram <blindanagram at nowhere.com> writes:
>>>
>>>> I came across an issue that I am wondering whether I should report
>>>> as an
>>>> issue.  If I have a directory, say:
>>>>
>>>>   base='C:\\Documents'
>>>>
>>>> and I use os.path.join() as follows:
>>>>
>>>>   join(base, '..\\..\\', 'build', '')
>>>
>>> It rather defeats the purpose of os.sep if you include it in a part of
>>> the path.  What you mean is better expressed as
>>>
>>>   join(base, '..', '..', 'build', '')
>>>
>>> (and base includes it too, but I can't suggest an alternative because I
>>> don't know your intent is far as defaults go.)
>>
>> Thanks for your input but while that part of my path may not be to your
>> liking, it works fine and does not seem to be relevant to my concern,
>> which is that join appears to treat os.sep as an absolute path, which it
>> is not.
>>
> If it starts with the path separator, then it's absolute (well, absolute
> on that drive).

Agreed.  I did not think that I needed to add this exception to my
comment as I thought from the the context that it would be clear that I
was questioning how it worked at the end of a path, not when used at its
 start.


More information about the Python-list mailing list