python: 中文文件名

原文地址:http://see.sl088.com/wiki/Python_%E6%89%93%E5%BC%80%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6

目录

[隐藏]

经验

  • idle里不行,看起来是它自己的问题-处理编码的问题
  • 在shell里完全没问题
>>> open("/Users/sen/tools/txt2wiki/测试页.txt")
<open file '/Users/sen/tools/txt2wiki/\xe6\xb5\x8b\xe8\xaf\x95\xe9\xa1\xb5.txt', mode 'r' at 0x1005a9b70>
>>> f=open("/Users/sen/tools/txt2wiki/测试页.txt")
>>> f.read
<built-in method read of file object at 0x1005a9c00>
>>> f.read()
'\xe6\xb5\x8b\xe8\xaf\x95\xe5\x86\x85\xe5\xae\xb9'

见识

[1]

般在交互环境下我不是这样做的。首先交互环境本身有编码,象我的可能是

cp936就是gbk编码。这样,a='中国'得到的是一个gbk编码,但你直接写成a=u'中

国'这样并不能得到正确的unicode编码。'中国'的ascii表示为:

'\xd6\xd0\xb9\xfa',它实际上是把这四个字节转成了unicode。而正确的'中国'

的unicode应该是u'\u4e2d\u56fd',那么简单地在字符前加上u并不能实现转换。

我的做法是:

a='中国'

b=unicode(a,

'cp936')

这样才能得到正确的unicode编码。繁体中文也应该一样,不过我就不知道是何种

编码了。可以:

>>> import locale

>>> print locale.getdefaultlocale()

('zh_CN',

'cp936')

至于繁简中文都放在utf-8中其实很简单,因为unicode已经包含了繁简中文的编

码,只要把utf-8转成unicode就可以了。但那样,要么把unicode转成简体码,要

么转成繁体码,我不清楚如何只转部分编码。既然那样,建议就使用utf-8好了。

Shau-Hung Hsieh wrote:

> -----BEGIN PGP SIGNED MESSAGE-----

> Hash: SHA1

>

[2]

如有一路径"e:/software/测试.txt"

需要通过pyhon读/写 "测试.txt"文件,可以采用下面的方法:

ipath = "e:/software/测试.txt"

uipath = unicode(ipath , "utf8")

然后用"uipath"经过编码后的路径去open()即可。

[3]

4 f = codecs.open('c:/intimate.txt','a','utf-8')

5 f.write(u'中文')

6 s = '中文'

7 f.write(s.decode('gbk'))

8 f.close()

引用信息

以下是[Python 打开中文文件]所有用到的引用信息,向这些伟大的家伙致敬:
  1. Python - Python Chinese Forum (), 见识于2013-6-10 9:50
  2. python处理中文文件名(中文路径)问题? - CSDN论坛 - CSDN.NET, 见识于2013-6-10 9:48
  3. python中读写文件及中文编码处理方法_我的笔记本_百度空间, 见识于2013-6-10 9:45

分类