2010-06-24 179 views
0

如何將字母添加到路徑?變量路徑

例如,如果我有一個像'c:\example2\media\uploads\test5.txt'(存儲在變量中)的路徑,但我需要類似r'c:\example2\media\uploads\test5.txt'的東西,我該如何添加字母`r?

因爲函數open()不想打開第一個路徑。當我嘗試添加路徑功能open()它給了我一個錯誤和路徑是這樣的:u'c:\\example2\\media\\uploads\\test5.txt'並說,該文件或目錄不存在。我該怎麼辦?

錯誤的樣子:

[Error 3] The system cannot find the path specified: u'C:\\example2\\media\\upload\\ZipFile.zip' 

當我這樣做開放( 'C:\例題\媒體\上傳\ test5.txt嗎'),它不能正常工作。並給我錯誤(你可以看到頂部)

回答

5

從錯誤消息中可以明顯看出,字符串以正確的格式存儲(反斜槓通過加倍轉義)。所以看起來路徑錯了,文件確實不存在。

另一方面,在編輯中添加的第二個示例中,使用open('c:\example2\media\uploads\test5.txt') - 這肯定會失敗,因爲\t是一個製表符(而所有其他反斜槓字母組合都不存在,所以反斜槓將被視爲正確轉義)。但是你說這個字符串存儲在一個變量中,所以我沒有看到這個例子在這裏有什麼幫助。

考慮以下幾點:

>>> path = 'c:\example2\media\uploads\test5.txt' 
>>> path 
'c:\\example2\\media\\uploads\test5.txt' 

看到了嗎?所有的反斜槓都被轉換爲,除了之外的\t之一,因爲這是唯一一個具有特殊含義的反斜槓。當然,現在這條路是錯誤的。因此,如果已經確定要引用變量這種方式(現在包含無效的路徑),有沒有什麼可以做,除了固定源:

>>> path = r'c:\example2\media\uploads\test5.txt' 
>>> path 
'c:\\example2\\media\\uploads\\test5.txt' 

你可能會認爲你可以「修復」有缺陷的路徑後來這樣的:

>>> path = 'c:\example2\media\uploads\test5.txt' 
>>> path.replace("\t","\\t") 
'c:\\example2\\media\\uploads\\test5.txt' 

...但也有許多其他的轉義碼(\b\r\n等),所以這不是一個真正的可行之路,尤其是因爲你周圍的症狀,而不是篡改解決根本問題。

+0

你真的是問題出在路上。我犯了錯。非常感謝所有人。 – Pol 2010-06-24 19:56:54

1

它是上傳或上傳?你的問題說的是那個,但你的錯誤說另一個。開頭的'u'表示該字符串是unicode格式,這不應該有任何影響。 '\\'字符是蟒蛇逃脫'\'字符所必需的。

0

字母'r'僅用於Python解釋器。它表明,解析器在解析字符串時不應該轉義任何序列。如果字符串已存儲在變量中,則與'r'字母無關。

我想問題是,有沒有這樣的文件。嘗試複製這條線,你得到的異常(我的意思是從該行的路徑),並將其粘貼到Windows運行對話框(Win + R會顯示它)。然後點擊「輸入」。

如果出現錯誤,請檢查路徑。在你的問題中你有uploaduploads,請確保你的代碼中使用了正確的。