2015-01-08 2 views
0

Я пытаюсь создать список всех файлов в каталоге в Python 2.7, но в конечном итоге с UnicodeDecodeError, независимо от того, что я делаю.Python - UnicodeDecodeError в листинге каталога

Мой кода: DirList = os.listdir (каталог)

for entry in dirList: 
    #all 3 tested seperatly 
    fullPath = directory+'/'+entry#throws exception 
    entry = entry.encode('ascii', 'ignore')#throws exception 
    entry = unicode(entry.strip(codecs.BOM_UTF8), 'utf-8')#throws exception 

Я заканчиваю с этой ошибкой: UnicodeDecodeError: 'ASCII' кодек не может декодировать байты 0xC3 в позиции 12: Порядковый не в диапазоне (128)

Исключение всегда возникает, когда entry имеет символ не-ascii. Предполагаемое слово, которое он обычно умирает, это «Элавхыбе». Когда я распечатываю его с print entry, он показывает Elavhobe (обратите внимание на измененный «o»).

Странно, всякий раз, когда я пытаюсь подключиться к SSH, я могу просто скомпоновать их вместе с directory+'/'+entry и I never получить исключение.

Моя конечная цель - создать полный путь к каталогу и передать его os.path.isdir(fullPath).

ответ

0

Хорошо, я нашел решение наконец. Поскольку я не очень хорош с python, я точно не знаю, как это работает, просто так оно и есть.

Я добавил это в верхней части моего файла:

import sys 

#reload sys and set the default encoding to utf-8 
#this will avoid errors when running as host server on server startup 
reload(sys) 
sys.setdefaultencoding('utf-8') 

Затем перекодировать мою запись, как ASCII, как это:

entry = entry.encode('ascii', 'ignore') 

, а затем все работает просто отлично. Надеюсь, это когда-нибудь поможет кому-то.