Python bitarray 从文件读写

7 投票
2 回答
8168 浏览
提问于 2025-04-16 19:06

我正在用这段代码把一个很大的位数组写入文件:

import bitarray
bits = bitarray.bitarray(bin='0000011111') #just an example

with open('somefile.bin', 'wb') as fh:
    bits.tofile(fh)

但是,当我尝试用以下代码读取这些数据时:

import bitarray
a = bitarray.bitarray()
with open('somefile.bin', 'rb') as fh:
    bits = a.fromfile(fh)
    print bits

却出现了错误,'bits' 变成了 NoneType。这是我哪里做错了呢?

2 个回答

1

我觉得 fromfile() 这个方法其实不返回任何东西。它的值是存储在你的位数组 'a' 里的。

12

我觉得“a”就是你想要的。a.fromfile(fh) 是一个方法,它会把 fh 的内容填充到 a 里面:它并不会返回一个位数组。

>>> import bitarray
>>> bits = bitarray.bitarray('0000011111')
>>> 
>>> print bits
bitarray('0000011111')
>>> 
>>> with open('somefile.bin', 'wb') as fh:
...     bits.tofile(fh)
... 
>>> a = bitarray.bitarray()
>>> with open('somefile.bin', 'rb') as fh:
...     a.fromfile(fh)
... 
>>> print a
bitarray('0000011111000000')

撰写回答