如何在 Python 中复制二进制文件?


在 Python 中,处理文件并对其进行处理以实现某些目标是一项反复且常规的任务。有时,您可能会发现需要复制包含非文本内容(例如图像、音频或视频文件)的二进制文件。在本文中,我们将探索在 Python 中复制二进制文件的各种有效方法。我们将处理四个不同的代码示例,每个示例都说明了复制二进制文件的一种独特且不同的方法。您会很高兴地知道,我们将通过清晰的分步说明和用户友好的内容,熟练地指导您完成此过程。因此,让我们开始这段掌握 Python 中二进制文件复制技巧的旅程吧!

理解二进制文件复制

首先,我们将了解二进制文件复制的过程。稍后我们将使用代码示例来进一步扩展我们对它的理解。二进制文件是指包含非文本数据的文件,例如图像、音频和视频内容,通常以二进制代码表示。与文本文件不同,二进制文件需要使用专用的方法进行复制,因为简单基于文本的方法是不够的,并且效果也不好。Python 为我们提供了名为 shutil 的强大模块,该模块在帮助复制二进制文件方面大有帮助。

使用 shutil.copy()

我们的第一个示例明确展示了使用 shutil.copy() 复制二进制文件。

在此代码中,我们首先导入 shutil 模块。此模块使执行高级操作成为可能。copy_binary_file() 函数接受 source_path 和 destination_path 作为参数。这些路径表示源文件和目标文件的路径。然后,我们继续使用 shutil.copy(source_path, destination_path) 函数将二进制文件从源路径复制到目标路径。如果操作成功,则函数打印成功消息。如果任一文件路径无效,则打印相应的错误消息。

示例

import shutil

def copy_binary_file(source_path, destination_path):
   try:
      shutil.copy(source_path, destination_path)
      print("Binary file copied successfully!")
   except FileNotFoundError:
      print("Error: One or both of the file paths are invalid.")

使用 shutil.copyfile()

我们当前的示例继续突出显示并说明了使用 shutil.copyfile() 进行二进制文件复制。

这里,shutil.copy() 函数被 shutil.copyfile() 函数替换以获得相同的结果。需要注意的是,copyfile() 函数专门用于复制二进制文件。我们应该知道它以源路径和目标路径作为参数,并将二进制数据从源文件复制到目标文件。

示例

import shutil

def copy_binary_file(source_path, destination_path):
   try:
      shutil.copyfile(source_path, destination_path)
      print("Binary file copied successfully!")
   except FileNotFoundError:
      print("Error: One or both of the file paths are invalid.")

使用 with open()

在我们的下一个示例中,我们将演示一种使用“with open()”语句复制二进制文件的替代方法。

这里,在此代码中,我们将继续使用“with open()”语句以及“rb”和“wb”模式。'rb' 模式表示“读取二进制”,而'wb' 模式表示“写入二进制”。我们使用这些模式打开源文件和目标文件。然后,使用 source_file.read() 从源文件读取二进制数据,然后使用 destination_file.write() 函数将其写入目标文件。此方法可以有效地在文件之间复制二进制数据。

示例

def copy_binary_file(source_path, destination_path):
   try:
      with open(source_path, 'rb') as source_file:
         with open(destination_path, 'wb') as destination_file:
            destination_file.write(source_file.read())
      print("Binary file copied successfully!")
   except FileNotFoundError:
      print("Error: One or both of the file paths are invalid.")

使用 shutil.copy2()

在我们的最后一个示例中,我们使用 shutil.copy2() 函数复制二进制文件,同时保留元数据。

在此示例中,我们将继续用 shutil.copy2() 替换 shutil.copyfile()。copy2() 函数与 copyfile() 非常相似,但它在复制的文件中保留原始文件的元数据,例如权限和时间戳。当您想要保留和维护原始文件的元数据时,这非常有用。

示例

import shutil

def copy_binary_file(source_path, destination_path):
   try:
      shutil.copy2(source_path, destination_path)
      print("Binary file copied successfully!")
   except FileNotFoundError:
      print("Error: One or both of the file paths are invalid.")

在 Python 中复制二进制文件是一项基本且必要的技能,它证明在各种项目中都非常宝贵且不可或缺。借助 shutil 模块,此任务可以高效且轻松地完成。到目前为止,您已经看到我们探索了四个不同的代码示例,每个示例都提供了复制二进制文件的一种独特方法。无论您选择 shutil.copy()、shutil.copyfile()、with open() 语句还是 shutil.copy2() 中的哪种方法,您都将高效地完成所需的任务。

随着您继续您的 Python 之旅,请认识并利用文件操作的多功能性,并尝试使用各种方法来适应不同的场景。

更新于: 2023-07-27

2K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告