我正在尝试在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")
对于非英文文件名,我总是得到“打开文件时出错”。
提前致谢。
答案 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)
它解决了我的错误。
感谢大家抽出时间回答。我没有尝试过上面提到的选项,因为我能够修复它,但是谢谢大家。