在os.walk()中使用原始字符串

时间:2013-05-02 19:50:27

标签: python os.walk

我正在尝试让os.walk()在我正在处理的程序中工作,但我一直收到错误: ValueError:invalid \ x escape

通过在线浏览,我发现错误可能源于不使用原始字符串。 但是,我仍然一直收到错误......

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

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

任何人都知道我可以做些什么来让它起作用?

2 个答案:

答案 0 :(得分: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' '\\'

使用自动字符串连接文字。

答案 1 :(得分: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\