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/
它给了我这个错误时,我把它作为统一: 回溯(最近通话最后一个): 文件“”,2号线,在 UnicodeEncodeError:“ASCII “编解码器不能在41-42位字符进行编码:有序不在范围内(128) 如果我离开它,因为它至少传递参数给使用os.system –
xRow
你指定编码为您的Python脚本文件字节?请检查更新后的答案。 – schaazzz
是的,我试图与编码线,还试图用编码.encode(sys.getfilesystemencoding(名称),但它并没有明显的区别,我有种陷在这里,感谢您的帮助反正。 – xRow