python中处理中文文件名
Nov 25, 2010最近在学习python 真是强大的语言
工作时经常需要批处理一些东西 我以前用c写程序处理 代码写起来很繁琐
用linux的shell处理 又经常要传文件并且功能不够强大
现在用了python 写小程序方便太多了 c用100行的python用30行就搞定了
我碰到的第一问题就是要处理中文的文件路径 当然报错了
SyntaxError: Non-ASCII character ‘xe5’ in file
这个错误是python默认代码文件用ASCII码 你存成UTF-8也没用 需要在程序第一行加
# -*- coding: UTF-8 -*-
这一行有很多写法 不要迷惑
系统只检测 # coding 编码 这三个要素 所以你会查到很多写法
而utf8和UTF-8应该也一样的 不过前者不小写或者后者不大写eclipse就会报错
而实际程序是不报错的 不过为了eclipse好看 我按照规范写的UTF-8
好了 现在文件中可以支持中文了 但是运行 还是报错
IOError: [Errno 2] No such file or directory
这肯定还是编码问题了 我又找了很多编码的资料 用了很多方法
有encode decode unicode 经过一番折腾
也用open成功打开了文件 但是
后来我查到 最规范的打开文件不用那么麻烦 应该是这样的
import os.path file_name=os.path.normcase(u"C:/项目/文件.txt") file=open(file_name,'r')
前两行是专门操作路径名的函数 会自适应各个操作系统
这里要用unicode串 然后函数会自动处理成可以使用的字符串
而文件路径中 用/或者或者\均可以 这就是python方便的地方