使用pathlib的与操作系统无关的相对路径

时间:2020-04-15 20:00:03

标签: python pathlib

我有一个字符串变量dirname,其中包含带有正确斜杠的路径(如果是Linux,则为'/';如果是Windows,则为'\')。

我有一个相对的文件名字符串,其中可能包含错误的斜杠。

我如何使用pathlib加入他们并为运行脚本的OS获取正确的完整文件名?

例如在Linux上运行:

dirname = '/users/myname/dir1'
filename1 = '..\\dir2\\file.txt'
filename2 = '../dir2/file.txt'

我想与dirnamefilename1一起加入filename2,并且在两种情况下都获得/users/myname/dir2/file.txt

在Windows上运行:

dirname = 'C:\\dir1'
filename1 = '..\\dir2\\file.txt'
filename2 = '../dir2/file.txt'

我想与dirnamefilename1一起加入filename2,并且在两种情况下都获得C:\\dir2\\file.txt

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是仅存储路径的组成部分:

import pathlib

path_1 = pathlib.Path(r"/users/myname/dir1")
print(path_1)

path_list = ["dir2", "file.txt"]

path_2 = pathlib.Path(*path_list)
print(path_2)

res = path_1.joinpath(path_2)
print(res)

输出:

/users/myname/dir1
dir2/file.txt
/users/myname/dir1/dir2/file.txt

不幸的是,这并不是完美的,似乎文件路径可能变得非常混乱。例如,请参见cross-platform splitting of path in pythonThis answer很整齐。

相关问题