当前位置: 首页 > 面试题库 >

Python中的二进制缓冲区

有德业
2023-03-14
问题内容

在Python中,您可以将StringIO用作字符数据的文件状缓冲区。内存映射文件基本上对二进制数据执行类似的操作,但是它需要一个用作基础的文件。Python是否有一个用于二进制数据且仅是内存的文件对象,相当于Java的ByteArrayOutputStream?

我的用例是我想在内存中创建一个ZIP文件,而ZipFile需要一个类似文件的对象。


问题答案:

您可能正在寻找io.BytesIO类。除了支持二进制数据外,它的工作原理与StringIO完全相同:

from io import BytesIO
bio = BytesIO(b"some initial binary data: \x00\x01")

StringIO将引发TypeError:

from io import StringIO
sio = StringIO(b"some initial binary data: \x00\x01")


 类似资料:
  • 我有一个二进制数据缓冲区,我想存储在协议缓冲区中。 在留档(https://developers.google.com/protocol-buffers/docs/proto#scalar)中,它说类型等价于C中的。我无法相信这一点,所以我不得不尝试它,是的,这似乎是这样... 本协议: 给出一个包含以下内容的消息定义: 公共setter/getter API如下所示: 当然,这不是在消息中存储二

  • 问题内容: 我从源接收数据,该数据本来是二进制格式的(是)。我必须将此数据转换回。我很难弄清楚该怎么做。 这是一个显示我的问题的小样本: 版画 在这里,我想与完全相同。 如何将字符串转换为其原始二进制文件? 问题答案: 由于utf8的工作方式(尤其是当无效的utf8字符替换为时),您不能期望转换为utf8并再次返回的二进制数据与原始二进制数据相同。 您必须使用另一种可以正确保留数据的格式。这可以是

  • 我无法重写从二进制缓冲区获取的文件,我已与原始文件进行了检查,所有字节都相同。 这是从NodeJS创建的文件: 这是最初的一个: 你可以比较这两个文件,每个字节都是一样的,我猜NodeJS的编码不是正确的。 这是一段代码 你可以试着在你的节点上运行它,看看结果是错误的。 我能做些什么来修复它?

  • 问题 你想直接读取二进制数据到一个可变缓冲区中,而不需要做任何的中间复制操作。 或者你想原地修改数据并将它写回到一个文件中去。 解决方案 为了读取数据到一个可变数组中,使用文件对象的 readinto() 方法。比如: import os.path def read_into_buffer(filename): buf = bytearray(os.path.getsize(filena

  • 问题内容: 我有一些二进制数据的缓冲区: 我想追加。 如何追加更多二进制数据?我正在搜索文档,但是要附加数据,它必须是字符串,否则,将发生错误( TypeError:Argument必须是string ): 然后,我在这里看到的唯一解决方案是为每个附加的二进制数据创建一个新缓冲区,并将其复制到具有正确偏移量的主缓冲区中: 但这似乎效率不高,因为我必须为每个追加实例化一个新的缓冲区。 您知道附加二进

  • 问题内容: 如何在Python中加,减和比较二进制数而不转换为小数? 问题答案: 您可以使用bin()和int()在二进制字符串表示形式之间进行转换