簡體   English   中英

將相對路徑解析為 Python 中的另一個相對路徑

[英]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.urljoinurljoin(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM