Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将二进制文件附加到另一个二进制文件_Python_Python 2.7_Append_Binaryfiles - Fatal编程技术网

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

Python 将二进制文件附加到另一个二进制文件,python,python-2.7,append,binaryfiles,Python,Python 2.7,Append,Binaryfiles,我想用最近创建的二进制文件附加以前编写的二进制文件。 本质上是合并它们。这是我正在使用的示例代码: with open("binary_file_1", "ab") as myfile: myfile.write("binary_file_2") 除了我得到的错误是“TypeError:必须是字符串或缓冲区,而不是文件” 但这正是我想要做的!将一个二进制文件添加到先前创建的二进制文件的末尾 我确实尝试将“wb”添加到“myfile.write”(“binary\u file\u 2”,

我想用最近创建的二进制文件附加以前编写的二进制文件。 本质上是合并它们。这是我正在使用的示例代码:

with open("binary_file_1", "ab") as myfile:
    myfile.write("binary_file_2")
除了我得到的错误是“TypeError:必须是字符串或缓冲区,而不是文件”

但这正是我想要做的!将一个二进制文件添加到先前创建的二进制文件的末尾


我确实尝试将
“wb”
添加到
“myfile.write”(“binary\u file\u 2”,“wb”)
,但它不喜欢这样。

您需要实际打开第二个文件并读取其内容:

with open("binary_file_1", "ab") as myfile, open("binary_file_2", "rb") as file2:
    myfile.write(file2.read())

来自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)循环lstFiles中的文件列表,其中src和dest是文件对象。要获取文件对象,只需使用适当的模式“rb”调用文件名上的open来打开文件“读取二进制文件。对于每个打开的文件对象,我们必须将其关闭。连接的文件也必须关闭。
我希望这会有所帮助

我怀疑您的代码是否会产生这种错误。你能发布你的实际代码吗?看……太好了!成功了!非常感谢你!这很好,第一个文件也不需要存在,所以你可以从无到有。给你的代码添加一些描述。逻辑比一段代码更有帮助。
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()