在Windows的目录中,我有2个文件,两个文件的名称都带有重音字符:t1û.fn
和t2ű.fn
;命令提示符中的dir
命令正确显示:
S:\p>dir t*.fn
Volume in drive S is q
Volume Serial Number is 05A0-8823
Directory of S:\p
2017-09-03 14:54 4 t1û.fn
2017-09-03 14:54 4 t2ű.fn
2 File(s) 8 bytes
0 Dir(s) 19,110,621,184 bytes free
截图:
但是,Python无法同时看到这两个文件:
S:\p>python -c "import os; print [(fn, os.path.isfile(fn)) for fn in os.listdir('.') if fn.endswith('.fn')]"
[('t1\xfb.fn', True), ('t2u.fn', False)]
看起来Python 2使用单字节API作为文件名,因此t1û.fn中的重音字符映射到单个字节\xfb
,t2ű.fn中的重音字符映射到unaccented ASCII单字节u
。
如何在Python 2中为Windows上的文件名使用多字节API?我想在Windows上的控制台版本的Python 2中打开这两个文件。
答案 0 :(得分:1)
使用unicode字符串:
f1 = open(u"t1\u00fb.fn") # t1û.fn
f2 = open(u"t2\u0171.fn") # t2ű.fn