On Thursday, 25 May 2023 at 17:57:21 UTC+1, MRAB wrote:
On 2023-05-25 16:53, Eryk Sun wrote:
On 5/25/23, BlindAnagram <[email protected]> wrote:
vcx_path = 'C:\\build.vs22\\lib\\lib.vcxproj'
src_path = 'C:\\lib\\src\\'
rel_path = '..\\..\\..\\lib\\src'
[snip]
The first of these three results produces an incorrect relative path
because relpath does not strip off any non-directory tails before
comparing paths.
The start path is assumed to be a directory, which defaults to the
current working directory, and the input paths are first resolved as absolute paths. In order to reach src_path from vcx_path, one has to traverse 3 levels up to the root directory.
https://docs.python.org/3/library/os.path.html#os.path.relpath
Well, it's not necessarily the optimal relative path, because it's not always necessary to go all the way up to the root, as in the first example.
Thanks to all for their comments.
I was hoping that there would be an direct way in Python to find a relative path between two paths in which the convention is that all directories end with '\\' so that it is possible to distinguish the 'tail' references to files as not part of the path
comparison.
But I will just have to remember to strip the file tails myself.
Surprisingly (for me at least) the alternative provided by the pathlib module 'relative_to' method doesn't provide for full relative path computation. I was expecting this would offer everything that os.path offers but it doesn't in this case.
Brian
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)