当前位置:首页 » 编程语言 » python读取中文路径

python读取中文路径

发布时间: 2023-01-24 06:43:04

‘壹’ 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遍历中文目录得到的文件路径报错

这是因为路径里面包含中文的原因:

  1. linux的系统字符编码默认为utf-8,而要搜索的文件路径nameFile是Unicode,需要进行解码成unicode,因此作如下修改:

  2. fout=codecs.open(nameFile.encode("utf-8"),"w","utf-8"
  3. 当然,另外一种方法就是修改为英文的路径;

  4. 关于编码和解码的知识,请参考: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))

热点内容
编程猫角度 发布:2025-07-20 18:40:19 浏览:508
hibernatesession的缓存 发布:2025-07-20 18:38:46 浏览:13
安卓模拟器下载电脑版哪个好 发布:2025-07-20 18:37:59 浏览:659
三星手机存储卡用不了 发布:2025-07-20 18:37:48 浏览:136
java数组返回 发布:2025-07-20 18:34:20 浏览:260
sqlserver不存在 发布:2025-07-20 18:28:05 浏览:838
原神电脑配置怎么玩不卡 发布:2025-07-20 18:07:06 浏览:955
反编译获取原代码 发布:2025-07-20 17:49:43 浏览:493
plc编译怎么找 发布:2025-07-20 17:48:56 浏览:162
无效的宏名称将编译哑宏 发布:2025-07-20 17:48:16 浏览:155