在Windows上的Python 2中打开名称中带有重音字符的文件

时间:2017-09-03 16:15:15

标签: windows unicode filenames python-2.x

在Windows的目录中,我有2个文件,两个文件的名称都带有重音字符:t1û.fnt2ű.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

截图:

screenshot of dir

但是,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中打开这两个文件。

1 个答案:

答案 0 :(得分:1)

使用unicode字符串:

f1 = open(u"t1\u00fb.fn")     # t1û.fn
f2 = open(u"t2\u0171.fn")     # t2ű.fn