Python:我如何从文件名得到正确的编码

问题描述:

>>> a=os.listdir('.') 
>>> a 
['arabic??.exe', 'asd.exe', 'chinese??.exe', 'cyrilic??.exe', 'french\xe7\xe9\xfc.exe', 'german\xe4\xdf\xfc.exe', 'registred\xae\xa9.exe', 'sandbox.py', 'spanish\xc1\xcd\xd3.exe'] 
>>> for each in a: 
... os.system(os.getcwd()+'\\'+each) 
... 
The system cannot find the path specified. 

我想打开一些文件与怪异字符,但上面的代码只适用于拉丁语言。我能做些什么来获得所有文件的正确编码并正确打开它们?或者是否有解决方法?Python:我如何从文件名得到正确的编码

旁注,上述逻辑上顺畅运行Linux系统。

文件名: cyrilicЧБ;中国伊艾;frenchçéü;阿拉伯شص; spanishÁÍÓ.exe;registred®©.EXE;germanäßü.exe

工作,如果你传递一个Unicode字符串的目录路径,例如:

os.listdir(u'.') 

编辑#0:

您还需要将以下标题添加到您的Python脚本中:

# -*- coding: utf-8 -*- 

你可以阅读更多关于此这里:https://www.python.org/dev/peps/pep-0263/

+0

它给了我这个错误时,我把它作为统一: 回溯(最近通话最后一个): 文件“”,2号线,在 UnicodeEncodeError:“ASCII “编解码器不能在41-42位字符进行编码:有序不在范围内(128) 如果我离开它,因为它至少传递参数给使用os.system – xRow

+0

你指定编码为您的Python脚本文件字节?请检查更新后的答案。 – schaazzz

+0

是的,我试图与编码线,还试图用编码.encode(sys.getfilesystemencoding(名称),但它并没有明显的区别,我有种陷在这里,感谢您的帮助反正。 – xRow