我有一个字符串变量dirname
,其中包含带有正确斜杠的路径(如果是Linux,则为'/';如果是Windows,则为'\')。
我有一个相对的文件名字符串,其中可能包含错误的斜杠。
我如何使用pathlib加入他们并为运行脚本的OS获取正确的完整文件名?
例如在Linux上运行:
dirname = '/users/myname/dir1'
filename1 = '..\\dir2\\file.txt'
filename2 = '../dir2/file.txt'
我想与dirname
或filename1
一起加入filename2
,并且在两种情况下都获得/users/myname/dir2/file.txt
。
在Windows上运行:
dirname = 'C:\\dir1'
filename1 = '..\\dir2\\file.txt'
filename2 = '../dir2/file.txt'
我想与dirname
或filename1
一起加入filename2
,并且在两种情况下都获得C:\\dir2\\file.txt
。
答案 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 python。 This answer很整齐。