将二进制文件附加到另一个二进制文件

时间:2014-09-18 11:16:08

标签: python python-2.7 append binaryfiles

我想附加一个先前编写的二进制文件,其中创建了一个更新的二进制文件。 基本上合并它们。这是我正在使用的示例代码:

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"),但它并不是那样的。

3 个答案:

答案 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来打开文件。对于每个打开的文件对象,我们必须将其关闭。串联文件也必须关闭。 希望对您有帮助