2013-05-02 61 views
-2

我試圖讓os.walk()在我正在處理的程序中工作,但我不斷收到錯誤: ValueError:invalid \ x escape使用os.walk()的原始字符串

從網上看,我看到錯誤可能是由於不使用原始字符串。 不過,我仍然不斷收到錯誤...

import os 
path = r'D:\Data\Tracking\' 

for root, dirs, files in os.walk(path): 
    print root 
    print dirs 
    print files 

人有我能做些什麼不同,以使它工作的想法?

+2

您可以發佈完整的錯誤信息,並充分回溯? – BrenBarn 2013-05-02 19:51:38

+0

我相信反斜槓仍然會在字符串中引號,所以放下最後一個反斜槓。另請參閱此處的語法突出顯示,其中突出顯示了此錯誤。確切的錯誤來自哪裏可能是未顯示的代碼部分。 – 2013-05-02 19:53:02

+1

'path = r'D:\ Data \ Tracking''。 ''''''是邪惡的根源 – gongzhitaao 2013-05-02 19:55:51

回答

1

我有點驚訝,你得到一個ValueError ......但注意到問題是跟蹤'

>>> path = r'D:\Data\Tracking' 
>>> path = r'D:\Data\Tracking\' 
    File "<stdin>", line 1 
    path = r'D:\Data\Tracking\' 
          ^
SyntaxError: EOL while scanning string literal 

對於解決方法,請Why can't a raw string end in an odd number of trailing backslashes

我最喜歡的是:

>>> path = r'D:\Data\Tracking' '\\' 

它採用文字的AUTOMAGIC字符串連接。

1

嘗試使用\\來防止最後一個反斜槓後面的引號轉義。

>>> path = r'D:\Data\Tracking\' 
    File "<input>", line 1 
    path = r'D:\Data\Tracking\' 
          ^
SyntaxError: EOL while scanning string literal 
>>> path = r'D:\Data\Tracking\\' 
>>> print(path) 
D:\Data\Tracking\\ 

你可以做到這一點沒有一個原始字符串,以獲得您想要的確切字符串:

>>> path = 'D:\\Data\Tracking\\' 
>>> print(path) 
D:\Data\Tracking\ 
相關問題