2013-05-02 3 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

+0

Я считаю, что обратная косая черта все же ускользает от кавычек в строке, поэтому оставьте последнюю обратную косую черту. См. Также подсветку синтаксиса здесь, что подчеркивает эту ошибку. Там, где происходит точная ошибка, вероятно, находится в части кода, который не показан. –

+1

'path = r'D: \ Data \ Tracking''. '' \ ''' является корнем зла – gongzhitaao

ответ

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\