2014-02-06 5 views
7

в проводнике файлов Windows создайте новое имя файла txt Ń.txt (обратите внимание на акцент на N).os.listdir удаляет символ акцента

удержания сдвига и щелкните правой кнопкой мыши папку, в которой вы создали Ń.txt и выберите открытое командное окно здесь (или в качестве альтернативы открытой cmd.exe и перейдите в каталог, где был создан файл

запустить питон терминал

print os.listdir(".") #note that the file is displayed as "N.txt" 
print map(os.path.exists,os.listdir(".")) #note the file doesnt exists??? 

Я пробовал много, но os.listdir декодирований не возвращая байтовую строку фактического файла на все ... так кодирования/декодирования неправильных байт по-прежнему неправильные байты ...

+0

не простофиля, может содержать соответствующую информацию: http://stackoverflow.com/questions/12876810/unicodeencodeerror-when-using-os-listdir – NPE

+0

Я взял на себя смелость, чтобы изменить вопрос, чтобы выделить проблему (мне потребовалось несколько показаний, чтобы заметить акцент). – NPE

+3

Что делает 'os.listdir (u". ")' Return (с 'u" "')? – NPE

ответ

5

Использование u до того, что:

>>> print os.listdir(u".") 
[u'\u0143.txt'] 
>>> print map(os.path.exists,os.listdir(u".")) 
[True] 

os.listdir(path):

Изменено в версии 2.3: В Windows NT/2k/XP и Unix, если пути является объект Unicode, результат будет список Юникодные объекты. Undeecodable filenames по-прежнему будет возвращен как Строковые объекты.

+0

спасибо thats amazing! Я подумал, что я был привинчен –

Смежные вопросы