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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:15:52