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)
您需要以二进制写入模式(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)
会做您想要的。