簡體   English   中英

使用斜杠將多個字符串連接到python中的路徑

[英]connecting multiple strings to path in python with slashes

我嘗試將以下字符串連接到路徑

mr = "/mapr"
cn = "12.12.12"
lp = "/data/dir/"
vin = "var"
os.path.join(mr, cn, lp, vin)

導致

'/data/dir/var'

為了達到預期的結果,我需要刪除變量lp中的第一個正斜杠

lp = "data/dir/"
os.path.join(mr, cn, lp, vin)

'/mapr/12.12.12/data/dir/var'

是否有更優雅的做法,因為我不想在開始時解析轉發斜杠的所有標識符?

這里的解決方案取決於上下文:您希望為用戶提供多少功率? 你有多信任他們輸入合理的東西? 結果是您想獲得相對路徑還是絕對路徑?

  • 選項1:為用戶供電

    讓用戶做他們想做的任何事情,並讓他們自己負責:

     result = os.path.join(mr, cn, lp, vin) # result: '/data/dir/var' 

    這為用戶提供了最大程度的控制。

  • 選項2:強制一切都是相對的

    如果要強制每個單獨的段都是相對路徑,則無法繞過任何前導路徑分隔符。

     seps = r'\\/' # backslash for windows, slash for all platforms fragments = [part.strip(seps) for part in [mr, cn, lp, vin]] result = os.path.join(*fragments) # result: 'mapr/12.12.12/data/dir/var' 

    如果您需要將結果作為絕對路徑,請將其與根目錄連接:

     seps = r'\\/' root = '/var/log' fragments = [part.strip(seps) for part in [mr, cn, lp, vin]] result = os.path.join(root, *fragments) # result: '/var/log/mapr/12.12.12/data/dir/var' 

關於os.path沒有指定任何分隔符的全部內容嗎?

這個怎么樣?

import os

mr = "mapr"
cn = "12.12.12"
lp = ["data","dir"]
vin = "var"

os.path.join(mr, cn, *lp, vin)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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