如何在Python中读取含二进制数据的sys.stdin并忽略错误?
读取sys.stdin并忽略解码错误的几种方法
如果你想逐行读取sys.stdin同时忽略解码错误,有以下几种可行方案:
方案1:重新打开标准输入文件描述符
利用os.fdopen重新打开sys.stdin对应的文件描述符,直接指定编码和解码错误处理策略:
import os import sys # 以utf-8编码、忽略解码错误的方式重新打开标准输入 stdin = os.fdopen(sys.stdin.fileno(), 'r', encoding='utf-8', errors='ignore') for line in stdin: # 处理每行内容 print(line.rstrip())
方案2:重新配置现有sys.stdin(Python 3.7+)
Python 3.7及以上版本支持直接调用sys.stdin.reconfigure()修改解码参数,无需重新打开文件:
import sys # 重新配置标准输入的编码和解码错误处理 sys.stdin.reconfigure(encoding='utf-8', errors='ignore') for line in sys.stdin: # 处理每行内容 print(line.rstrip())
方案3:通过buffer逐行读取后解码
你提到的sys.stdin.buffer方式也可以实现逐行读取,只需遍历buffer的行字节数据再解码:
import sys for line_bytes in sys.stdin.buffer: line = line_bytes.decode('utf-8', errors='ignore') # 处理每行内容 print(line.rstrip())
内容的提问来源于stack exchange,提问作者g00dds
相关产品推荐
相关产品推荐

