您的位置:首页 > 运维架构 > Linux

windows文本在linux系统下利用Python读取错误的问题

2018-03-30 09:47 736 查看
# 编程小白的学习记录

"""

 问题描述:

                 朋友有一个生产管理的txt文档,让我帮忙把txt文件内容读取出来.
                直接将windows的文件复制,在linux进行读取(电脑双系统)

"""# 读取TXT文件
f=open("/home/dengshuo/DataStructure/a2.txt",'rt')
line=f.readline()
while line:
# 打印出每一行
print(line,end="")
line=f.readline()
f.close() 输出结果: File "/home/dengshuo/anaconda3/lib/python3.6/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position 27: invalid start byte显示文件解码错误,utf-8不能识别 oxba
在文件默认的情况下,都是默认使用utf-8,尝试改变文本编码方式GB2312,还是出现同样的错误

解决问题:

             oxBA(186): <186>查阅Pythoncookbook,这个错误是没有正确的编码方式读取文件
open()函数提供了一个error参数来处理错误.f=open("/home/dengshuo/DataStructure/a2.txt",'rt',errors='replace')
lines=f.readlines()
for line in lines:
print(line,)
f.close()
output:home/dengshuo/anaconda3/bin/python "/home/dengshuo/PycharmProjects/dengshuo python/readtxt.py"
CE574,2-261,H180210-007-01,�����ͨ��,��,5052,5052,�Ͼ���ʱ��ó����˾,620,2080,7250,3,7350,25.592,76.776,313,82,76.79,93.65%,3��5��,3��30��

CF457,3-16,B180226-104-01,5ϵ������,��,5052,5052,��������Դ,620,1380,6600,5,7000,16.171,80.854,346,86,79.67,92.64%,3��5��,3��30��

CE575,3-16,B180226-104-01,5ϵ������,��,5052,5052,��������Դ,620,1380,6600,5,7000,16.171,80.854,346,83,79.68,96.00%,3��5��,3��30��错误的原因是没有识别文档中的汉字.
CE574,2-261,H180210-007-01,横剪普通板,—,5052,5052,南京恒时汇贸易有司,620,2080,7250,3,7350,25.592,76.776,313,82,76.79,93.65%,3月5日,3月30日
CF457,3-16,B180226-104-01,5系汽车板,—,5052,5052,奇瑞新能源,620,1380,6600,5,7000,16.171,80.854,346,86,79.67,92.64%,3月5日,3月30日


解决问题的办法也很简单,在linux文件下新建一个txt,将文本内容复制过来就可以成功读取./home/dengshuo/anaconda3/bin/python "/home/dengshuo/PycharmProjects/dengshuo python/readtxt.py"
CE574,2-261,H180210-007-01,横剪普通板,—,5052,5052,南京恒时汇贸易有司,620,2080,7250,3,7350,25.592,76.776,313,82,76.79,93.65%,3月5日,3月30日

CF457,3-16,B180226-104-01,5系汽车板,—,5052,5052,奇瑞新能源,620,1380,6600,5,7000,16.171,80.854,346,86,79.67,92.64%,3月5日,3月30日

CE575,3-16,B180226-104-01,5系汽车板
8a7c
,—,5052,5052,奇瑞新能源,620,1380,6600,5,7000,16.171,80.854,346,83,79.68,96.00%,3月5日,3月30日

CF458,3-17,B180226-104-02,5系汽车板,—,5052,5052,奇瑞新能源,620,1380,6600,5,7000,16.171,80.854,346,83,79.70,96.02%,3月5日,3月30日

Process finished with exit code 0

后记:关于unix和windows上有一个关于换行符的识别(\n  和\r\n 之争)
Python在"通用型换行符"模式下,在读取时将换行符转换成一个单独的 \n 字符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐