2025-11-30 解决Python重定向sys.stderr时的ValueError,python stdout重定向 解决Python重定向sys.stderr时的ValueError,python stdout重定向 例如,以下代码就很容易触发该问题:python import syssys.stderr = "captured error" # 错误!字符串不是合法的文件对象运行这段代码会立即报错:“ValueError: invalid file”。虽然意图是“捕获”错误输出,但字符串显然不具备写入能力,也无法被系统识别为有效的输出流。正确的做法是使用符合io.TextIOBase或io.IOBase协议的对象。最常用的解决方案是利用io.StringIO——这是一个内存中的文本流缓冲区,能够模拟真实文件的行为。下面是一个典型的安全重定向示例:python import sys from io import StringIO创建一个 StringIO 对象来捕获 stderr 输出oldstderr = sys.stderr capturebuffer = StringIO() sys.stderr = capture_buffer模拟一些错误输出print("This is an error message", file=sys.stderr)恢复原始 stderrsys.stderr... 2025年11月30日 2 阅读 0 评论