【问题标题】:How I can append bits in a file using Python?如何使用 Python 在文件中追加位?
【发布时间】:2021-05-06 10:30:33
【问题描述】:

我正在编写一个程序来读取文件中的位并将其写入另一个文件。我找到了一个名为 bitstring 的库,它有助于将位作为字符串进行操作。但是,这个库可以帮助我读取位,但我无法写入读取的位。输入和输出文件的大小相同,因此在字节方面没有问题。这是我的代码的一部分。

import bitstring


file = bitstring.ConstBitStream(filename='paper.pdf')
print(file.length)

bits_to_read = 5000000
last_bits = 0

while file.pos < file.length-bits_to_read:
    bits = file.read(bits_to_read)
    str_bits = bitstring.BitArray(bits).bin



rest = file.length - file.pos
bits = file.read(rest)
str_bits = bitstring.BitArray(bits).bin

致以诚挚的问候。

【问题讨论】:

  • 什么意思“我无法写入读取位”。向我们展示您尝试了哪些功能,结果如何?您是否以附加或附加二进制模式打开第二个文件?
  • 所以,我正在从文件中读取位并对其进行处理、加密。接下来,我想将结果位写入另一个文件。我唯一的解决方案是写为字节。但是,我想像流媒体一样做。
  • [python] write bitstring 上有 32 次点击,你能解释一下(在问题正文中,而不是在 cmets 中)为什么你想做的不同吗?此外,在 SO 上,您必须显示您尝试过的代码以及它给出的任何错误。
  • @smci thx,刚刚找到解决方案。
  • 这能回答你的问题吗? Write boolean string to binary file?

标签: python bit-manipulation


【解决方案1】:

所以,我找到了解决方案。我将结果位附加到一个变量中,然后导出。这是代码的一部分:

while file.pos < file.length-bits_to_read:
    bits = file.read(bits_to_read)
    str_bits = bitstring.BitArray(bits).bin
    encrypted_bits = ''.join(encrypt(str_bits, cipher))
    exported_str = exported_str + encrypted_bits

rest = file.length - file.pos
bits = file.read(rest)
str_bits = bitstring.BitArray(bits).bin
exported_str = exported_str + str_bits

exported_bits = bitstring.BitArray(bin=exported_str)
with open(output_name, 'wb') as f:
    f.write(exported_bits.tobytes())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 2022-12-07
    相关资源
    最近更新 更多