Python [2] 创建中文文件名的问题

2013-08-21 15:54:21 +08:00
 tedd
想创建一个中文名的文件,在网上搜了半天,搜出三个方案,都失败了...只有来求助了...

>>> n = u'文件'
>>> print n
文件

>>> fp = u'c:\\{}.txt'.format(n)
>>> print fp
c:\文件.txt

尝试1:
>>> f = open(fp, 'w')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 13] Permission denied: u'c:\\\u6587\u4ef6.txt'

尝试2:
>>> f = open(unicode(fp, 'utf-8'), 'w')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: decoding Unicode is not supported

尝试3:
>>> import os.path
>>> fp2 = os.path.normcase(u'c:/文件.txt')
>>> f = open(fp2, 'w')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 13] Permission denied: u'c:\\\u6587\u4ef6.txt'
4982 次点击
所在节点    Python
8 条回复
clouder
2013-08-21 16:03:27 +08:00
是不是编码问题,加上 #-*- coding: utf-8 -*- 试试
for4
2013-08-21 16:09:51 +08:00
这不是权限问题吗?
nervouna
2013-08-21 16:23:50 +08:00
permission
英 [pəˈmɪʃn] 美 [pɚˈmɪʃən]
n.允许; 批准,正式认可,认可

denied
英 [dɪ'naɪəd] 美 [dɪ'naɪəd]
adj.拒签
v.拒绝( deny的过去式和过去分词 ); 拒绝承认; 拒绝…占有; 否认知情
123123
2013-08-21 16:24:33 +08:00
先把 Permission denied 搞定
tedd
2013-08-21 16:30:15 +08:00
真的不是权限的问题啊,我已更改文件存放的地方确保能够写入了,还是编码的问题
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 1: ordinal not in range(128)
banbanchs
2013-08-21 16:49:20 +08:00
@tedd 编码问题的话应该是这样?
In [14]: type(fp)
Out[14]: unicode

In [15]: type(fp.encode('utf-8'))
Out[15]: str
Ever
2013-08-21 16:51:05 +08:00
windows下面fp.encode('gbk')
tedd
2013-08-21 16:55:18 +08:00
@Ever 貌似可以了哈~感谢Ever

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/79756

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX