Python3读文件和问题解决
Posted rare2
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3读文件和问题解决相关的知识,希望对你有一定的参考价值。
文件是存储在硬盘上的,程序读文件首先就是要将文件和内存对象关联起来,打开文件,再通过一系列操作使得对象能获得文件的内容。
open()方法能打开文件并在内存中创建一个文件对象。
使用方法:open(磁盘文件名,打开方式)
1 def main(): 2 file = open(‘news_tensite_xml.dat‘,‘r‘) 3 for i in range(20): 4 line = file.readline() 5 print(line)
6 main()
但是这样写是有问题的,我们看看问题都出在哪里。
问题1:没有进行关闭文件的操作
文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。
1 def main(): 2 file = open(‘news_tensite_xml.dat‘,‘r‘) 3 for i in range(20): 4 line = file.readline() 5 print(line) 6 file.close() 7 main()
问题2:编码格式报错
错误的意思是Unicode的解码(Decode)出现了错误(Error),以gbk编码的方式去解码(该字符变成Unicode),但是位置440处的字节0xfd无法通过gbk的方式解码。
这个错误就是说可能要处理的字符本身不是gbk编码,但是却以gbk编码去解码 。比如,字符串本身是utf-8的,但是却用gbk去解码utf-8的字符串,所以结果必然会出错。
解决方法:
1(不合适)以二进制的形式读入,将打开方式‘r‘改为‘rb‘
这样二进制的读入方式会将一些不必要的换行符‘ ‘或文件结束符‘0x1A‘(EOF)当作正常字符解码,使得后续分词操作、词频统计无法进行
2 加编码方式
在打开文本的时候,就指明编码方式
def main(): file = open(‘news_tensite_xml.dat‘,‘r‘,encoding=‘gb18030‘) #其中gb18030可换成utf-8或gbk for i in range(20): line = file.readline() print(line) file.close() main()
gb18030是一种编码范围更广泛的编码方式,如果有连它都无法编码的字符,可以在语句中加上errors属性
1 file = open(‘news_tensite_xml.dat‘,‘r‘,encoding=‘gb18030‘,errors=‘ignore‘)
更改完错误后输出结果:
以上是关于Python3读文件和问题解决的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段