【问题标题】:How to write/pack a binary string to file in Python如何在 Python 中将二进制字符串写入/打包到文件中
【发布时间】:2017-04-16 06:02:24
【问题描述】:

我想做一个简单的操作,但我无法管理它。我有一个由编码算法得出的“0”和“1”字符串。我想把它写到文件中,但我认为我做错了。

我的字符串类似于'11101010000......10000101010'

其实我正在写一个二进制文件为:

print 'WRITE TO FILE '
with open('file.bin', 'wb') as f:
    f.write(my_coded_string)

print 'READ FROM FILE' 
with open('file.bin', 'rb') as f:
    myArr = bytearray(f.read())
myArr = str(myArr)

如果我查看文件的大小,我会发现一些非常大的东西。所以我想我是用一个完整的字节来写每个 1 和 0。这样对吗?

我找到了一些使用“struct”函数的例子,但我没能理解它是如何工作的。

谢谢!

【问题讨论】:

标签: python file struct io binary


【解决方案1】:

因为输入二进制是字符串,python 将每个位写入一个字符。 您可以使用来自

bitarray 模块编写您的比特流

像这样:

from bitarray import bitarray

str = '110010111010001110'

a = bitarray(str)
with open('file.bin', 'wb') as f:
    a.tofile(f)

b = bitarray()    
with open('file.bin', 'rb') as f:
    b.fromfile(f)

print b

【讨论】:

    【解决方案2】:

    使用这个:

    import re
    text = "01010101010000111100100101"
    bytes = [ chr(int(sbyte,2)) for sbyte in re.findall('.{8}?', text) ]
    

    获取可以附加到二进制文件的字节列表,用

    with open('output.bin','wb') as f:
        f.write("".join(bytes))
    

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 1970-01-01
      • 2010-10-15
      • 2017-06-06
      • 1970-01-01
      • 2015-05-07
      • 2013-05-29
      • 1970-01-01
      • 2020-08-28
      相关资源
      最近更新 更多