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