On 26/05/2020 18:07, BlindAnagram wrote:
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 <blindanag...@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.

But you aren't talking about the end of the (finished) path, you are talking about the start of the final path component you pass to os.path.join(), "\\". As the documentation says, "If a component is an absolute path, all previous components are thrown away and joining continues from the absolute path component." Since "\\" is an absolute path component, all the previous components are thrown away and you are left with just "\\".

--
Rhodri James *-* Kynesim Ltd
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to