2013-05-02 32 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\ 
相关问题