python打开文本遇到的编码问题

问题:

使用py遍历某个文件下所有文件夹内的文件,这些文件有UTF-8,GBK...。

打开这些文件,检查是否含有某个字段,有的话将文件名输出到某个文本中。

with open(new_path,"r+",encoding="utf-8") as k:
    clag = 0
    try:
       text = k.read().split('\n')
       flag = ''
       for g in text:
           if check(g):flag = new_path
        if flag and not check_head(text):
           res.append(flag)
           clag = 1
        except:pass

图中使用 with 方法打开文件。但是可能会遇到编码问题。

 如果文本使用的UTF8以外的编码,是也能够打开。但是再进行读取 

k.read(),k.readlines()

的时候就会进行报错。

 

解决方法:

           1.直接逃避。再open内添加关键字error

with open(file_name,'r',encoding='gbk',error='ignore') as f:

            逃避可耻,但不一定有用。这样就能直接跳过。

            2. 添加标签clag,

with open(new_path,"r+",encoding="gbk") as k:
    clag = 0
    try:
       text = k.read().split('\n')
       flag = ''
       for g in text:
           if check(g):flag = new_path
        if flag and not check_head(text):
           res.append(flag)
           clag = 1
        except:pass

            如果读取成功,就把标签置为1,否则为0。放在try当中。

            再添加一个if语句用于判断标签的值。

            这样,就能够在每次读取的时候进行测试,如果读取失败就会进行下一次的读取。

    当编码数多的时候,也可以把编码数全部放在一个列表内,for循环这个列表,以上代码中把encoding的值进行替换就行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值