[英]OS-agnostic relative path using pathlib
我有一個字符串變量dirname
,其中包含帶有正確斜杠的路徑('/' 如果在 Linux 上,'\' 如果在 Windows 上)。
而且我有一個可能包含錯誤斜杠的相對文件名字符串。
如何使用 pathlib 加入它們並為運行腳本的操作系統獲取正確的完整文件名?
例如在 Linux 上運行:
dirname = '/users/myname/dir1'
filename1 = '..\\dir2\\file.txt'
filename2 = '../dir2/file.txt'
我想用filename1
或filename2
加入dirname
,並在這兩種情況下都獲取/users/myname/dir2/file.txt
。
在 Windows 上運行:
dirname = 'C:\\dir1'
filename1 = '..\\dir2\\file.txt'
filename2 = '../dir2/file.txt'
我想用filename1
或filename2
加入dirname
,並在兩種情況下都得到C:\\dir2\\file.txt
。
一個潛在的解決方案是只存儲路徑的組件:
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)
Output:
/users/myname/dir1
dir2/file.txt
/users/myname/dir1/dir2/file.txt
不幸的是,這並不完美,文件路徑似乎會變得非常混亂。 例如,參見python 中路徑的跨平台拆分。 這個答案很簡潔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.