2013-09-28 175 views
11

我面臨着一個非常基本的問題,在Python腳本中使用目錄路徑。當我從Windows資源管理器複製路徑時,它使用反斜槓作爲導致問題的路徑分隔符。Python的Windows路徑斜槓

>>> x 
'D:\testfolder' 
>>> print x 
D:  estfolder 
>>> print os.path.normpath(x) 
D:  estfolder 
>>> print os.path.abspath(x) 
D:\  estfolder 
>>> print x.replace('\\','/') 
D:  estfolder 

有人可以幫我解決這個問題。

+0

正斜線在所有操作系統上都可以理解 - 但windows上的'normpath'確實使用'\\'。我個人覺得使用'path'方法來組合/管理路徑是最簡單的,然後最後從'\\'替換爲'/'以便跨系統保持一致。不知道這是否回答你的Q? – Basic

+4

你可以在這個字符串之前添加一個r,例如,x = r'D:\ testfolder',並且x將是「D:\ testfolder」。在字符串前添加'r'顯示該字符串是一個原始字符串。 – Mark

回答

12

Python將字符串中的\t解釋爲製表符;因此,如您注意到的那樣,"D:\testfolder"將使用:e之間的選項卡打印出來。如果你想要一個實際的反斜槓,你需要逃生反斜槓輸入它作爲\\

>>> x = "D:\\testfolder" 
>>> print x 
D:\testfolder 

然而,對於跨平臺的兼容性,您應該使用os.path.join。我認爲Windows上的Python會自動正確處理正斜槓(/)。

+7

只要使用正斜槓就可以在windows下工作 - 'os.path.join()'顯然是最強的解決方案。 –

+9

或者,您可以通過在「r」前加一個[原始字符串](http://docs.python.org/2/reference/lexical_analysis.html#string-literals),以便不會解釋轉義序列,例如, 'R 「d:\ testfolder」'。 –

+2

@AdamRosenfield原始字符串不適用於Windows路徑。 https://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-%E2%80%94-backslas-in-windows-filenames/ –

相關問題