python读取中文路径
‘壹’ python中读取文件(路径含中文)出现乱码问题。
没有Python3 。
你试一下
path='Py....'#下面添加一行
path=path.decode('gbk')
‘贰’ python读写有中文的文件时,是否需要设置编码格式
需要:
with open("路径","模式",encoding="utf8") as f:
如果不确定编码格式,后面读取可能会出问题
‘叁’ pathlib2 中文路径出错
编码问题可能导致python读取中文路径时出错,使python读取中文路径失败
解决方法一:路径拆分单独编码
方法二:对全部路径用unicode格式编码
1.choice_5_29_spyder.py 文件路径不能有中文(导致莫名报错,python 3环境下没有报错)
2.get_im_context.py 文件路径中有中文导致只能run,不能debug(python 2环境下只能run不能debug)
‘肆’ python文件的创建、写入、读取
最近在构思如何 本地化股票数据 ,觉得有必要复习一下python对文件的创建、写入、和读取。
首先先了解一下对于文件的处理都有常用函数:
open(path, mode):生成文件对象。
参数说明:path文件路径、mode文件的操作模式
文件的操作模式说明
1、写入模式:‘w’创建、‘wb’创建二进制、‘a’追加内容、‘ab’二进制形式追加内容(另外如在后面添加‘+’号,附加读取功能如:‘w+’)
可用write()、writelines()写入内容、close()保存文件
注意:windows系统在输入写入中文时,输入参数 encoding=‘utf-8’
可用read()函数对文件内容进行读取
注意:读取的内容是从结尾开始的,用seek(0)函数指定读取位置为开头
这里我用‘w+’模式来举例
2、读取模式:‘r’读取内容、‘rb’读取二进制内容(区别于写入模式的读取,读取模式从开头开始读取)
除了read()、还有readline()调用一次返回一行数据、readlines()返回每行数据list
另外还有mode属性:看查文件对象的模式、closed属性:判断文件是否关闭、name属性:返回文件名
这里我还要介绍一个关键字with,他是一个表达式能为调用的文件对象别名,且自动关闭文件。
‘伍’ 如何解决Python中文问题
python的中文问题一直是困扰新手的头疼问题,Python的发行版至今尚未包括任何中文支持模块。当然,几乎可以确定的是,在将来的版本中,python会彻底解决此问题,不用我们这么麻烦了。 笔者使用的是2.5版本。Python的版本可以通过调用sys模块的sys.version查看。在几个月的学习中,主要遇到以下问题:
1. print打印中文的问题:
在编辑器中输入一段测试代码:
s=’测试’
print s
运行结果如下:
Non-ASCII character '\xb2' in file c:\Documents and Settings\Administrator\桌面\2.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details: 2.py, line 1, pos 0
原因是如果文件里有非ASCII字符,需要指定编码声明。把2.py文件的编码重新改为utf-8,并加上编码声明:
# -*- coding: utf-8 -*-
s=’测试’
print s
运行后可以正确打印中文。
2.中文路径的问题。
在D盘下保存一个名字为‘中文.txt‘的文件。运行如下测试代码:
# -*- coding: utf-8 -*-
f=open('D:\\中文.txt', 'r')
print f.read()
运行结果如下:
IOError: [Errno 2] No such file or directory: 'D:\\\xe4\xb8\xad\xe6\x96\x87.txt'
字符串有很多的编码,不同的系统和平台有各自的编码 ,为了实现系统或平台之间的信息交互可能需要编码转换。这里只需要先使用UNICODE编码一下,这样再读取中文路径就不会有问题了:
复制代码
# -*- coding: utf-8 -*-
path='D:\\中文.txt'
spath=unicode(path , "utf8")
f=open(spath,'r')
print f.read()
复制代码
然后就可以正确显示文件内容
总结:
所有的中文显示问题都可以归结为编码问题,遇到其他类似的问题,那只能仔细看文档,靠你的经验,靠你多做测试。而且根据python所报出来的错误一般也可以判断出来。那么当发现需要编码转换时,剩下的就是如何正确进行码制转换。
为了正确处理多语言文本,Python在2.0版后引入了Unicode字符串。从那时起,Python语言中的字符串就分为两种:一种是2.0版之前就已经使用很久的传统Python字符串,一种则是新的Unicode字符串。在Python语言中,一般的解决办法是使用unicode()内建函数对一个传统Python字符串进行“解码”,得到一个Unicode字符串,然后又通过Unicode字符串的encode()方法对这个Unicode字符串进行“编码”,将其“编码”成为传统Python字符串。
‘陆’ python读取中文目录出现乱码
先对路径进行unicode处理,然后再打开。举例:
inpath = 'E:\MyProject\SVN_Project\Drawingboard_local\model\mydata\input\proction\示波器\0.htm'
uipath = unicode(inpath, "utf8")
然后用"uipath"经过编码后的路径去open()即可:
fin = open(uipath)
‘柒’ 读取python遍历中文目录得到的文件路径报错
这是因为路径里面包含中文的原因:
linux的系统字符编码默认为utf-8,而要搜索的文件路径nameFile是Unicode,需要进行解码成unicode,因此作如下修改:
fout=codecs.open(nameFile.encode("utf-8"),"w","utf-8"
当然,另外一种方法就是修改为英文的路径;
关于编码和解码的知识,请参考:http://www.cnblogs.com/qiernonstop/p/3634462.html
‘捌’ 如何用Python 打开包含中文的路径(是打开文件夹,不是文件)
start_directory="D:\\我的项目文件\\8482\\".dencode('utf8').encode('cp936') # 转换一下编码应该就OK了
‘玖’ python读取中文命名的.py文件
python读取中文名的文件一直比较麻烦
目前得到的可靠解决方案:
strPath = "类.py" #这里的strpath是你的中文路径名
a = unicode(strPath , "utf-8")
print list(fileinput.input(a))