根据BytesIO docs:
getbuffer()
返回缓冲区内容的可读和可写视图,而不复制它们。另外,更改视图将透明地更新缓冲区的内容:
getvalue()
返回包含缓冲区全部内容的字节。
所以getbuffer
似乎更复杂。但是,如果您不需要可写的视图?然后,您会简单地使用getvalue
吗?权衡是什么?
在此示例中,似乎它们做的完全相同:
# Create an example
from io import BytesIO
bytesio_object = BytesIO(b"Hello World!")
# Write the stuff
with open("output.txt", "wb") as f:
f.write(bytesio_object.getbuffer())
答案 0 :(得分:0)
使用 getbuffer() 更好,因为如果您有非常大的数据,复制它们可能需要很长时间。并且(来自PEP 20):
<块引用> 显式优于隐式。 但是值是未定义的——它可能是 str 或字节。缓冲区总是字节。