在python中创建二进制文件

时间:2014-02-20 14:01:38

标签: python binaryfiles

我有一个非常大的二进制文件,名为file1.bin,我想创建一个文件file2.bin,它只保存file1.bin的第一个32kb文件。

所以我正在按如下方式阅读file1:

myArr = bytearray()

with open(r"C:\Users\User\file1.bin", "rb") as f:
byte = f.read(1)
for i in range(32,678):
    myArr.extend(byte)
    byte = f.read(1)

我的问题是:如何从myArr创建file2二进制文件?

我试过

with open(r"C:\Users\User\file2.bin", "w") as f:
f.write(myArr)

但结果是:

f.write(myArr)
TypeError: must be string or pinned buffer, not bytearray

2 个答案:

答案 0 :(得分:4)

您需要以二进制写入模式(wb)打开文件。

with open('file2.bin', 'wb') as f:
    f.write(myArr)

此外,您从输入文件中读取的方式效率很低。 f.read()允许您一次读取多个字节:

with open('file1.bin', 'rb') as f:
    myArr = bytearray(f.read(32678))

将完全按照您的意愿行事。

答案 1 :(得分:0)

使用适当的标志打开文件,然后从1024字节的块中读取一个文件,并写入其他文件,如果剩余少于1024个字节,则按字节方式复制。

fin = open('file1.bin', 'rb')
fout = open('file2.bin', 'w+b')
while True:
  b=fin.read(1024)
  if b:
    n = fout.write(b)
  else:
    while True:
      b=fin.read(1)
      if b:
        n=fout.write(b)
      else:
        break
    break