[英]resolve a relative path to another relative path in Python
我有一個相對於另一個相對路徑的相對路徑,我想加入它們:
rel_path1 = '../../data/a'
rel_path2 = '../../main.xml'
# pseudo function: join_rel_paths
result = join_rel_paths(rel_path1, rel_path2)
# My expectation
expected_result = '../../../main.xml'
assert result == expected_result
有沒有可以實現這一目標的庫?
pathlib.Path
: (Path(rel_path1) / Path(rel_path2)).resolve()
-> 它返回帶有cwd
的絕對路徑urllib.parse.urljoin
: urljoin(rel_path1, rel_path2)
-> main.xml
不是我想要的您的示例的預期結果應該是../../main.xml
,即與rel_path2
相同。 rel_path2 中的兩個..
從rel_path2
中剝離最后兩個組件,將其rel_path1
為../..
。 然后main.xml
。 (但是再往下看,看看如何rel_path1
的最后一個組件。)
您可以通過使用os.path.join
后跟os.path.normpath
來實現此目的:
rel_path1 = '../../data/a'
rel_path2 = '../../main.xml'
tmp = os.path.join(rel_path1, rel_path2)
result = os.path.normpath(tmp)
這給出了'../../data/a/../../main.xml'
為tmp
和'../../main.xml'
為result
。
如果您想將rel_path1
的最后一個組件視為一個文件(並忽略它),您可以使用os.path.dirname
來執行此操作:
rel_path1b = os.path.dirname(rel_path1)
這rel_path1b
設置為'../../data'
,然后您可以使用它代替rel_path1
來獲取'../../../main.xml'
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.