1

我正在尝试将一个坑数组写入 python 中的文件,如下例所示:python bitarray to and from file

但是,我的实际测试文件中出现了垃圾:

test_1 = ^@^@
test_2 = ^@^@

代码:

from bitarray import bitarray

def test_function(myBitArray):
    test_bitarray=bitarray(10)
    test_bitarray.setall(0)

    with open('test_file.inp','w') as output_file:
        output_file.write('test_1 = ')
        myBitArray.tofile(output_file)
        output_file.write('\ntest_2 = ')
        test_bitarray.tofile(output_file)

任何有关出现问题的帮助将不胜感激。

4

1 回答 1

4

那不是垃圾。该tofile函数将二进制数据写入二进制文件。一个全为 0 的 10 位长bitarray将输出为 0 的两个字节。(文档解释说,当长度不是 8 的倍数时,它用 0 位填充。)当您将其作为文本阅读时,两个 0 字节看起来像^@^@,因为^@(许多)程序将 0 字节表示为文本的方式。

如果您想要一个人类可读的文本友好表示,请使用该to01方法,该方法返回一个人类可读的字符串。例如:

with open('test_file.inp','w') as output_file:
    output_file.write('test_1 = ')
    output_file.write(myBitArray.to01())
    output_file.write('\ntest_2 = ')
    output_file(test_bitarray.to01())

或者也许你想要这个:

output_file(str(test_bitarray))

…这会给你类似的东西:

bitarray('0000000000')
于 2013-08-05T23:25:25.343 回答