AttributeError: '_io.StringIO'对象没有'buffer'属性?

0 投票
1 回答
37 浏览
提问于 2025-04-12 19:26

我有一个函数,它的作用就是把一个字符串写入一个流缓冲区:

import sys
from typing import IO

def write(s: str, stream: IO[bytes] = sys.stdout.buffer):
    stream.write(s.encode())
    stream.flush()

我同时使用了flake8和mypy,它们没有报错,但pdoc却出现了一个属性错误:

[...]

    def write(s: str, stream: IO[bytes] = sys.stdout.buffer):
AttributeError: '_io.StringIO' object has no attribute 'buffer'

有没有办法解决这个问题呢?

1 个回答

0

这其实不是一个解决方案,但因为标准输出(stdout)是一个TextIO对象,所以我把这个函数重写成了:

def write(s: str, stream: TextIO = sys.stdout):
    stream.write(s)
    stream.flush()

撰写回答