如何在python中打开中文名称的文件

时间:2011-03-17 08:00:43

标签: python

我正在尝试在python中使用“open()”函数以“w”模式打开文件。

文件名是:仿宋人笔意.jpg。

open函数使用此文件名失败,但成功使用普通文件。

如何在python中打开名称不是英文的文件?

我的代码如下:

try:
    filename = urllib.quote(filename.encode('utf-8'))
    destination = open(filename, 'w')
    yield("<br>Obtained the file reference")
except:
    yield("<br>Error while opening the file")

对于非英文文件名,我总是得到“打开文件时出错”。

提前致谢。

5 个答案:

答案 0 :(得分:5)

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import codecs
f=codecs.open(u'仿宋人笔意.txt','r','utf-8')
print f.read()
f.close()

在这里工作得很好

答案 1 :(得分:3)

如果您遇到问题,那么您的操作系统或终端配置似乎比Python本身更有可能;即使不使用编解码器模块,它对我也没问题。

这是一个测试的shell日志,它打开一个图像文件并将其复制到一个新文件中,并带有您提供的中文名称:

$ ls
create_file_with_chinese_name.py    some_image.png
$ cat create_file_with_chinese_name.py 
#!/usr/bin/python
# -*- coding: UTF-8 -*-

chinese_name_file = open(u'仿宋人笔意.png','wb')

image_data = open('some_image.png', 'rb').read()

chinese_name_file.write(image_data)

chinese_name_file.close()
$ python create_file_with_chinese_name.py 
$ ls
create_file_with_chinese_name.py    some_image.png              仿宋人笔意.png
$ diff some_image.png 仿宋人笔意.png 
$ 

为我工作,图像是一样的。

答案 2 :(得分:0)

如果你得到你的文件名,它看起来是正确的吗?在到达此代码段之前,我不确定filname是否已损坏。

答案 3 :(得分:0)

此:

filename.encode('utf-8') 

尝试将文件名从ascii编码转换为utf-8并导致错误。

答案 4 :(得分:0)

我尝试修改我的代码并将其重写为:

    destination = open(filename.encode("utf-8"), 'wb+')
    try:
        for chunk in f.chunks():
                destination.write(chunk)
        destination.close()
    except os.error:
        yield( "Error in Writing the File ",f.name)

它解决了我的错误。

感谢大家抽出时间回答。我没有尝试过上面提到的选项,因为我能够修复它,但是谢谢大家。