鱼C论坛

 找回密码
 立即注册
查看: 1914|回复: 9

遍历子目录,然后打开txt文件,提示错误的问题

[复制链接]
发表于 2020-10-3 16:23:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import os
for i in os.walk(os.curdir):
    for j in i[2]:
        if os.path.splitext(j)[1] == '.txt':
            txtfile = i[0]+ 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-3 16:27:03 | 显示全部楼层
不是所有的文本文件都是 gbk 编码的。这样试试:
import os
for i in os.walk(os.curdir):
    for j in i[2]:
        if os.path.splitext(j)[1] == '.txt':
            txtfile = i[0]+ 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-3 16:27:47 | 显示全部楼层
这是错误,输出了一行乱码,最后是错误提示
QQ截图20201003162558.png
QQ截图20201003162622.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-3 16:28:35 | 显示全部楼层
f = open(txtfile, 'r',encoding='utf-8')
加个encoding可以解决大部分

应该用try,碰到不能解码的,可能是二进制内容的文件,换一种打开模式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-10-3 16:29:45 | 显示全部楼层
zltzlt 发表于 2020-10-3 16:27
不是所有的文本文件都是 gbk 编码的。这样试试:

还是输出同样的错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-3 16:33:50 | 显示全部楼层
疾风怪盗 发表于 2020-10-3 16:28
加个encoding可以解决大部分

应该用try,碰到不能解码的,可能是二进制内容的文件,换一种打开模式


按照您的修改了之后,之前是乱码的地方正常输出了。
然后之前可能是gbk编码的文件,现在不输出了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-3 16:35:23 | 显示全部楼层
本帖最后由 疾风怪盗 于 2020-10-3 16:36 编辑
孤独的美食家 发表于 2020-10-3 16:33
按照您的修改了之后,之前是乱码的地方正常输出了。
然后之前可能是gbk编码的文件,现在不输出了。


所以说用try啊
打不开就换一种编码方式

不是只有一种编码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-3 16:47:16 | 显示全部楼层
哎,手动把所有的txt文件都另存为utf-8格式了,然后用utf-8打开 错误消失,好蠢。先这么做吧,要学的东西太多了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-3 16:52:18 | 显示全部楼层
孤独的美食家 发表于 2020-10-3 16:47
哎,手动把所有的txt文件都另存为utf-8格式了,然后用utf-8打开 错误消失,好蠢。先这么做吧,要学的东西太 ...

你没学异常处理么。。。。。。try一下不就好了么。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-3 18:24:27 | 显示全部楼层
疾风怪盗 发表于 2020-10-3 16:52
你没学异常处理么。。。。。。try一下不就好了么。。。。。

还没学到,刚开始学文件处理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 12:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表