在python中创建二进制文件

Sub*_*way 3 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)
Run Code Online (Sandbox Code Playgroud)

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

我试过了

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

但这导致:

f.write(myArr)
TypeError: must be string or pinned buffer, not bytearray
Run Code Online (Sandbox Code Playgroud)

Joe*_*ett 5

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

with open('file2.bin', 'wb') as f:
    f.write(myArr)
Run Code Online (Sandbox Code Playgroud)

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

with open('file1.bin', 'rb') as f:
    myArr = bytearray(f.read(32678))
Run Code Online (Sandbox Code Playgroud)

会做您想要的。