簡體   English   中英

os.path.join沒有正確格式化路徑

[英]os.path.join not properly formatting path

我正在用Python編寫一個Windows命令行目錄導航器,並在os.path.join中苦苦掙扎。 從本質上講,這就是我要做的事情:

abspath = "C:\Python32\Projects\ls.py"
abspath = abspath.split('\\')
print(abspath) #this prints ['C:', 'Python32', 'Projects', 'ls.py']

if(options.mFlag):  
        print(os.path.join(*abspath)) #this prints C:Python32\Projects\ls.py
        m = time.ctime(os.path.getmtime(os.path.join(*abspath))) #this throws an exception

問題是os.path.join沒有在'C:'之后插入'/',我無法弄清楚原因。 有幫助嗎?

編輯:如果將來有人在這里尋找解決方案,我只是在“C:”之后添加了os.sep,而不是硬編碼反斜杠而且有效。

文檔

請注意,在Windows上,由於每個驅動器都有一個當前目錄, os.path.join("c:", "foo")表示相對於驅動器C上當前目錄的路徑:(c:foo),而不是c :\\ FOO。

有點難以分辨你要完成什么,因為你的所有代碼似乎都是為了分割路徑,然后將其完全按照原來的方式重新組合在一起,在這種情況下為什么要將它分開放在第一位? 但也許os.path.splitdrive可以幫到你嗎? 它會從路徑中分割驅動器號。

文檔( http://docs.python.org/2/library/os.path.html )指定了此行為:

請注意,在Windows上,由於每個驅動器都有一個當前目錄,os.path.join(“c:”,“foo”)表示相對於驅動器C上當前目錄的路徑:(c:foo),而不是c :\\ FOO。

暫無
暫無

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

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