遍历子目录,然后打开txt文件,提示错误的问题
import osfor i in os.walk(os.curdir):
for j in i:
if os.path.splitext(j) == '.txt':
txtfile = i+ os.sep + j
#print(txtfile)
f = open(txtfile ,'r')
f_content = f.read()
print(f_content)
f.close()
File "C:\Python34\MyCode\1 test 2.py", line 11, in <module>
f_content = f.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 4: illegal multibyte sequence 不是所有的文本文件都是 gbk 编码的。这样试试:
import os
for i in os.walk(os.curdir):
for j in i:
if os.path.splitext(j) == '.txt':
txtfile = i+ os.sep + j
#print(txtfile)
try:
f = open(txtfile ,'r')
except:
f = open(txtfile, 'r', encoding='utf-8')
f_content = f.read()
print(f_content)
f.close() 这是错误,输出了一行乱码,最后是错误提示 f = open(txtfile, 'r',encoding='utf-8')
加个encoding可以解决大部分
应该用try,碰到不能解码的,可能是二进制内容的文件,换一种打开模式 zltzlt 发表于 2020-10-3 16:27
不是所有的文本文件都是 gbk 编码的。这样试试:
还是输出同样的错误 疾风怪盗 发表于 2020-10-3 16:28
加个encoding可以解决大部分
应该用try,碰到不能解码的,可能是二进制内容的文件,换一种打开模式
按照您的修改了之后,之前是乱码的地方正常输出了。
然后之前可能是gbk编码的文件,现在不输出了。 本帖最后由 疾风怪盗 于 2020-10-3 16:36 编辑
孤独的美食家 发表于 2020-10-3 16:33
按照您的修改了之后,之前是乱码的地方正常输出了。
然后之前可能是gbk编码的文件,现在不输出了。
所以说用try啊
打不开就换一种编码方式
不是只有一种编码 哎,手动把所有的txt文件都另存为utf-8格式了,然后用utf-8打开 错误消失,好蠢。先这么做吧,要学的东西太多了 孤独的美食家 发表于 2020-10-3 16:47
哎,手动把所有的txt文件都另存为utf-8格式了,然后用utf-8打开 错误消失,好蠢。先这么做吧,要学的东西太 ...
{:10_312:}你没学异常处理么。。。。。。try一下不就好了么。。。。。 疾风怪盗 发表于 2020-10-3 16:52
你没学异常处理么。。。。。。try一下不就好了么。。。。。
还没学到,刚开始学文件处理{:10_250:}
页:
[1]