2015-06-11 6 views
0

Я получаю путьдвойной обратный слэш питон os.path.abspath

dire=os.path.abspath(".") 

и

for fileName in filter(os.path.isfile, os.listdir(path=direc)) 

но dire имеет C:\\ и посылает мне следующую ошибку:

TypeError: listdir() takes no keyword arguments 

, когда я распечатать dire чтобы увидеть содержание печать число:

C:\\user\\documents.... 

, что я могу сделать, чтобы получить \ и не \\ в os.path.abspath(".")?

+2

Вы путают * представление * с * значением *. Используйте 'print (dire)', чтобы увидеть разницу. «\\» представляют собой нотацию Python для строковых литералов *, где вам нужно избегать обратных косых черт, чтобы сохранить их значение. –

+0

Разве это 'direc' опечатка? –

+0

И почему бы не попробовать использовать * позиционный * аргумент для 'os.listdir()'? Итак, 'os.listdir (directc)'? Обратные косые черты никогда не являются причиной сообщения об ошибке, когда сообщение об ошибках ключевого слова не работает. –

ответ

1

Я предполагаю, что по print вы имеете в виду repr.

s = 'C:\\' 
s 
>>> 'C:\\' 
print(s) 
>> C:\ 

Обратите внимание, что при печати там не ни двойной \\ ни '

Другой точкой является ошибка TypeError: listdir() takes no keyword arguments
так почему не попробовать:

for fileName in filter(os.path.isfile, os.listdir(direc)) 

вместо

for fileName in filter(os.path.isfile, os.listdir(path=direc)) 
Смежные вопросы