2015-01-08 1 views
0

디렉토리에서 파이썬 2.7의 모든 파일 목록을 작성하려고하는데, 어떻게해야할지에 상관없이 UnicodeDecodeError로 끝납니다.Python - 디렉토리를 나열하는 중 유니 코드 오류가 발생했습니다.

내 코드는 다음과 같습니다 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 : '아스키'코덱의 위치는 12 바이트 0xc3를 디코딩 할 수 없습니다 서수 (128)

entry에 비 ASCII 문자가있는 경우 예외가 항상 발생합니다. 그것이 일반적으로 죽어가는 단어는 "Elavhõbe"입니다. print entry으로 인쇄하면 Elavhobe가 표시됩니다 (변경된 'o'표시).

이상하게도 SSH 연결을 시도 할 때마다 directory+'/'+entry과 함께 넣을 수 있으며 이 아닙니다. 예외가 발생합니다.

내 최종 목표는 전체 디렉토리 경로를 빌드하고 os.path.isdir(fullPath)으로 전달하는 것입니다.

답변

0

좋아, 결국 해결책을 찾았습니다. 나는 파이썬과 잘 맞지 않기 때문에 그것이 어떻게 작동하는지 정확히 알지 못한다.

나는 내 파일의 맨 위에이 추가 :
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') 

그런 다음 나는이 같은 아스키로 내 항목을 인코딩 :

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

하고 모든 것이 잘 작동합니다. 희망이 누군가 언젠가 도움이됩니다.

관련 문제