当前位置:  开发笔记 > 编程语言 > 正文

Python中的二进制缓冲区

如何解决《Python中的二进制缓冲区》经验,为你挑选了2个好方法。

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

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



1> akhan..:

您可能正在寻找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")



2> Henrik Gusta..:

只要您不尝试将任何unicode数据放入您的手中StringIO,并且小心不要使用,cStringIO您应该没问题.

根据StringIO文档,只要你保持unicode或8位,一切都按预期工作.据推测,StringIO当有人做某事时f.write(u"asdf")(根据我的知识,ZipFile不做)会做一些特别的事情.无论如何;

import zipfile
import StringIO

s = StringIO.StringIO()
z = zipfile.ZipFile(s, "w")
z.write("test.txt")
z.close()
f = file("x.zip", "w")
f.write(s.getvalue())
s.close()
f.close()

按预期工作,生成的存档中的文件与原始文件之间没有区别.

如果您知道这种方法不起作用的特定情况,我最感兴趣的是听到它:)

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有