2014-07-16 2 views
0

"test"폴더에 유니 코드 파일명 : aγλώσ.txt 파일이 있습니다. 나는이 폴더에 os.walk 일을하고 파일을 열려고하지만이 오류를파이썬을 사용하여 유니 코드 파일 이름 읽기

IOError: [Errno 22] invalid mode ('rb') or filename: 'C:\\Users\\username\\Documents\\test\\a???s.txt' 

를 얻을 다음은 내가 사용하고있는 코드는입니다.

path = r"C:\Users\username\Documents\test" 
for rootFile, dirs, files in os.walk(path): 
    for filename in files: 
    absolutePath = os.path.abspath(rootFile) 
    fullFileName = os.path.join(absolutePath, filename) 
    with open(fullFileName , 'rb') as f: 
     #do something 

는 또한 rootFile, dirs, files in os.walk(path.encode('utf-8'))

업데이트를 사용하여 시도 :

내가 rootFile, dirs, files in os.walk(unicode(path, 'utf-8')):을 시도하고 나는이 나에게 다음과 같은 오류를 제공 fullFileName = fullFileName .encode('utf-8') 를했던 파일을 열기 전에

IOError: [Errno 2] No such file or directory: 'C:\\Users\\username\\Documents\\test\\a\xc3\x8e\xc2\xb3\xc3\x8e\xc2\xbb\xc3\x8f\xc5\xbd\xc3\x8f\xc6\x92.txt' 

실제 파일 이름은 aγλώ입니다. __.txt

+0

"root path"문자열을 파일 이름에 추가하기 때문에 게시 된 코드가 오류 메시지와 일치하지 않습니다. 사용중인 실제 코드를 게시하십시오. – BrenBarn

+0

어디에서 실행하나요? –

+0

코드 위치 또는 IDE를 의미합니까? IDE는 Eclipse입니다 – rdp

답변

0

추가 한 fullFileName = fullFileName .encode('utf-8') 줄을 제거하십시오. Windows 파일 API는 UTF-8을 인식하지 못합니다. UTF-16 또는 로케일 종속 멀티 바이트 인코딩을 사용합니다.

+0

"로캘 종속 멀티 바이트 인코딩"대부분의 Windows 로캘 종속 인코딩은 사실 싱글 바이트 –

+0

입니다.하지만 그게 전부가 아니라 멀티 바이트 인코딩입니다. 이 멀티 바이트 인코딩처럼 느슨하게 사용하면 싱글 바이트 인코딩이 포함됩니다. 코드가 멀티 바이트 인코딩을 올바르게 처리하면 싱글 바이트 인코딩도 올바르게 처리됩니다. –

관련 문제