gpt4 book ai didi

python - 在 Python 3 中逐行读取文件时捕获 UnicodeDecodeError 异常

转载 作者:太空狗 更新时间:2023-10-29 22:17:48 31 4
gpt4 key购买 nike

考虑以下代码:

with open('file.txt', 'r') as f:
for line in f:
print(line)

在 Python 3 中,解释器尝试解码它读取的字符串,这可能会导致异常,如 UnicodeDecodeError。这些当然可以用 try ... except block 围绕整个循环捕获,但我想在每行的基础上处理它们。

问题:有没有一种方法可以直接捕获并处理读取的每一行的异常?希望不要过多更改遍历文件的简单语法?

最佳答案

Pythonic 的方式大概是用codecs.register_error_handler('special', handler) 注册一个错误处理程序并在open 函数中声明它:

with open('file.txt', 'r', error='special') as f:
...

那样的话,如果有违规行,handler 将使用 UnicodeDecodeError 调用,并且能够返回替换字符串或重新引发错误.

如果您想要更明显的处理,另一种方法是以二进制模式打开文件并显式解码每一行:

with open('file.txt', 'rb') as f:
for bline in f:
try:
line = bline.decode()
print(line)
except UnicodeDecodeError as e:
# process error

关于python - 在 Python 3 中逐行读取文件时捕获 UnicodeDecodeError 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47452824/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com