很多情况下我们是这样读取文本文件的:

with open(r'F:\.Python Project\spidertest1\test\pdd凉席.txt', 'r') as f:

text = f.read()

但是如果该文本文件是gbk格式的,那么将会报以下错误:

Traceback (most recent call last):

File "F:/.Python Project/spidertest1/test/MyTest4.py", line 14, in

text = f.read()

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 1129: illegal multibyte sequence

查了下资料说是添加encoding='utf-8',这个参数:

with open(r'F:\.Python Project\spidertest1\test\pdd凉席.txt', 'r', encoding='utf-8') as f:

text = f.read()

但是这种方式治标不治本,原因就在于你根本不知道用户打开的是utf-8的文本文件还是gbk的或者是Unicode的

所以只能采取以下这种办法:

open('x:xxxx','rb'):

第二个参数为:'rb' 以二进制格式打开一个文件用于只读。这就避免了指定了encoding与文件实际编码不匹配而报错的问题

import chardet

def check_code(text):

adchar = chardet.detect(text)

# 由于windows系统的编码有可能是Windows-1254,打印出来后还是乱码,所以不直接用adchar['encoding']编码

#if adchar['encoding'] is not None:

# true_text = text.decode(adchar['encoding'], "ignore")

if adchar['encoding'] == 'gbk' or adchar['encoding'] == 'GBK' or adchar['encoding'] == 'GB2312':

true_text = text.decode('GB2312', "ignore")

else:

true_text = text.decode('utf-8', "ignore")

return true_text

def read_file_text(file_url):

# 第二个参数为:'rb' 以二进制格式打开一个文件用于只读。这就避免了指定了encoding与文件实际编码不匹配而报错的问题

with open(file_url, 'rb') as f:

file_text = f.read()

file_text = check_code(file_text)

return file_text

python文本文件读取失败_Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案)...相关推荐

  1. python实现规则引擎_python – 如何在不使用eval()或exec()的情况下创建规则引擎?...

    我的数据库中有一个简单的规则/条件表,用于为我们的某个系统生成警报.我想创建规则引擎或特定于域的语言. 存储在此表中的简单规则是..(省略此处的关系) if temp > 40 send ema ...

  2. Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案)

    Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案) 参考文章: (1)Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案) (2)https://ww ...

  3. python中文件读取失败_Python文件读取与异常

    文件和异常 with open("text.txt") as p:读取文件目录下的text.txt文件并返回文件对象存储在p变量 text=p.read()读取p变量的内容 存储到 ...

  4. python requests下载图片_python读取图片大小Python Requests模块快速入门

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似.它比 urllib 更加方便,可以节约我们大量的工作,它比 urllib 更加 Pythoner. 安装 Re ...

  5. python朋友圈头像_Python读取微信好友头像,拼成祝福语九宫格

    今天有位老哥过生日,结合着微信头像和点阵字,搞了个头像拼字的代码,朋友圈九宫格效果如下: 其中,每个字都是16*16的点阵,点阵中每个点可以拆解为4个好友头像图片: 代码中汉字文本可以自定义输入,头像 ...

  6. python修改yaml文件_Python读取yaml文件的详细教程

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...

  7. python读视频文件_python读取和保存视频文件

    如何用python实现视频关键帧提取并保存为图片?也许你会觉得对小编多做一点事你会觉得你很爽,可是在小编看来这是不屑的 import cv2vc = cv2.VideoCapture('Test.av ...

  8. python远程文件管理系统_python 读取远程服务器文件

    几个提高工作效率的Python内置小工具 在这篇文章里,我们将会介绍4个Python解释器自身提供的小工具.这些小工具在笔者的日常工作中经常用到,减少了各种时间的浪费,然而,却很容易被大家忽略.每当有 ...

  9. python unicode码转换_python实现unicode转中文及转换默认编码的方法

    本文实例讲述了python实现unicode转中文及转换默认编码的方法.分享给大家供大家参考,具体如下: 一.在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77e ...

最新文章

  1. 变速更顺滑_1.6TGDI直喷发动机+7速湿式双离合自动变速箱,表现会如何?
  2. TowerKing随笔汇总集
  3. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
  4. 专题 11 IPC之管道
  5. C# delegate and event
  6. 华为荣耀畅玩7c计算机在那,华为荣耀畅玩7C
  7. C++对象内存模型学习
  8. USTC English Club Note20171020(3)
  9. leetcode474. 一和零(动态规划)
  10. 实战案例丨ModelArts在数据标注、数据过滤上的应用技巧:自动分组
  11. 访问量冲破1000大关,截图庆祝!
  12. try...catch...finally的陷阱——加锁的线程开发经验分享
  13. mysql groupby php_php – MySQL,GroupBy OrderBy
  14. 浏览Android系统源码的站点
  15. Discuz模版制作流程
  16. win10系统C盘根目录里文件夹都是干什么的
  17. 查找附近的xxx 球面距离以及Geohash方案探讨
  18. 【xlwings api语言参考】Range.AutoFill 方法
  19. linux域名通过代理,Haproxy根据域名匹配后端服务器
  20. Google优化排名方法

热门文章

  1. YOLOv1的loss函数
  2. MATLAB 部署工具(Deployment Tool)的使用——MATLAB与C#混合编程
  3. PCB 传输线教程(上):基于 Polar Si9000 与嘉立创工艺的传输线设计
  4. 重生之沙费德提克 LOL重生之沙费德提克购买地址 重生之沙稻草人皮肤特效视频
  5. 新未来简史:区块链、人工智能、大数据陷阱与数字化生活 - 电子书下载(高清版PDF格式+EPUB格式)...
  6. hex和bin文件格式区别
  7. 软件测试人员的素质要求
  8. SAS 9.4 的超详细安装过程(保姆级教程)(含安装包+常见问题解决)
  9. JAVA2实用教程(第5版)第二章
  10. 超详细的Python安装和环境搭建教程(2022)