You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取文件时如何跳过引发解码错误的行?

解决Python读取文件时跳过解码错误行的问题

你的代码存在两个核心问题:

  • 文本模式下readline()触发UnicodeDecodeError时,文件指针会停在出错的字节位置,后续调用next(f)会导致指针混乱,无法正常读取后续行。
  • 文件末尾调用next(f)会直接抛出StopIteration错误,导致程序崩溃。

推荐使用二进制模式读取+逐行解码的方式,精准跳过解码失败的整行,代码如下:

with open('patients.txt', 'rb') as f:
    for line_bytes in f:
        try:
            # 替换为你文件实际使用的编码,比如gbk、utf-16等
            line = line_bytes.decode('utf-8')
            print(line, end='')
        except UnicodeDecodeError:
            print('Error reading line, skipping line')

代码说明:

  1. 用rb二进制模式打开文件,遍历文件对象会自动按行读取字节数据,避免文本模式下提前触发解码错误。
  2. 对每一行字节单独尝试解码,失败则直接跳过该行,不影响其他行的读取流程。
  3. 使用with语句自动管理文件资源,无需手动关闭文件,更安全可靠。

原代码失效原因:

文本模式下,readline()遇到无法解码的字节时会直接抛出错误,此时文件指针并未移动到下一行起始位置,后续的next(f)会继续从出错字节处读取,导致后续行读取依然失败,甚至在文件末尾触发StopIteration异常。

内容的提问来源于stack exchange,提问作者gnwxla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:37:12