使用python循环读取文件夹下的txt文本时,发现写入的时候没有控制它的字符编码为"utf-8"或者GBK,导致它的编码一会儿这个一会儿那个的,有的时候还会出现另一种编码。
普通的写法
下方代码出现gbk或者utf-8或者另一种编码的时候,偶尔会报错。
答案:无法解决
def combine_files(file_paths):
combined_content = ""
for file_path in file_paths:
with open(file_path, 'r') as file:
content = file.read() + '<br />'
combined_content += content
return combined_content
进阶写法
在读取的时候加上encoding='utf-8' 或者encoding='gbk'
下方代码如果是utf-8将会按照utf-8来执行,如果不是,按照默认的编码执行。
但是有时候仍然出现字符编码错误。
答案:不能解决问题!
def combine_files(file_paths):
combined_content = ""
for file_path in file_paths:
with open(file_path, 'r',encoding='utf-8') as file:
content = file.read() + '<br />'
combined_content += content
return combined_content
最好的写法
自动识别编码,并持续执行。(需要用到chardet包)
答案:完美解决
import chardet
def combine_files(file_paths):
combined_content = ""
for file_path in file_paths:
with open(file_path, 'rb') as file:
raw_data = file.read()
detected_encoding = chardet.detect(raw_data)['encoding']
content = raw_data.decode(detected_encoding) + '<br />'
combined_content += content
return combined_content
以上是十六在python文件读取时遇到的坑,可能代码不一定完全完美或者精炼,但是执行无报错,问题解决,分享给大家!
原创文章,作者:lichen360,如若转载,请注明出处:https://hhpi.cn/381.html