读取文件名为希腊语的文件



我不是unicode专家,我看过类似的帖子,没有任何结论性的解决方案。我需要一个片段来读取一些带有希腊字符的文件。我的文件名是

20.10.2011 Ισοζύγιο Πληρωμών- Αύγουστος 2011.xls

我有一个生成文件名的生成器函数:

# -*- coding:utf-8 -*-
import os
import glob
def filesInDir(directory, mask='*.*'):
    for root, dir, files in os.walk(directory):
        for file in glob.glob(os.path.join(root, mask)):            
            yield file
调用:

for file in filesInDir(directory=r'.'):
    with open(file,'r') as f:
        print f

IOError: [Errno 22] invalid mode ('r') or filename: '.\20.10.2011 ?s?????? ?????xb5??- ?????st?? 2011.xls'

如何使用这些类型的文件名创建一个有效的文件对象?

您需要确保使用Unicode字符串调用os.walk(),否则它将无声地将非ASCII字母更改为ASCII(或将其更改为?,如您所观察到的)

也是如此
for file in filesInDir(directory=u'.'):
    with open(file,'r') as f:
        print f

def filesInDir(directory, mask=u'*.*'):
    for root, dir, files in os.walk(directory):
        for file in glob.glob(os.path.join(root, mask)):            
            yield file

最新更新