我想附加一个先前编写的二进制文件,其中创建了一个更新的二进制文件。 基本上合并它们。这是我正在使用的示例代码:
with open("binary_file_1", "ab") as myfile:
myfile.write("binary_file_2")
我得到的错误除外"TypeError: must be string or buffer, not file"
但那正是我想要做的!将一个二进制文件添加到先前创建的二进制文件的末尾。
我确实尝试将"wb"
添加到"myfile.write("binary_file_2", "wb")
,但它并不是那样的。
答案 0 :(得分:9)
您需要实际打开第二个文件并阅读其内容:
with open("binary_file_1", "ab") as myfile, open("binary_file_2", "rb") as file2:
myfile.write(file2.read())
答案 1 :(得分:1)
for file in files:
async with aiofiles.open(file, mode='rb') as f:
contents = await f.read()
if file == files[0]:
write_mode = 'wb' # overwrite file
else:
write_mode = 'ab' # append to end of file
async with aiofiles.open(output_file), write_mode) as f:
await f.write(contents)
答案 2 :(得分:0)
从python模块shutil中
import os
import shutil
WDIR=os.getcwd()
fext=open("outputFile.bin","wb")
for f in lstFiles:
fo=open(os.path.join(WDIR,f),"rb")
shutil.copyfileobj(fo, fext)
fo.close()
fext.close()
首先我们打开outputFile.bin二进制文件进行写入,然后使用shutil.copyfileobj(src,dest)(其中src和dest是文件对象)遍历lstFiles中的文件列表。要获取文件对象,只需使用适当的模式“ rb”读取二进制文件,通过在文件名上调用open来打开文件。对于每个打开的文件对象,我们必须将其关闭。串联文件也必须关闭。 希望对您有帮助