如何在 Python 中复制文件?
在现代软件开发中,以编程方式复制文件是最常见的活动之一。在本教程中,我们将学习使用 shutil 模块在 Python 中传输文件的几种不同方法。
Shutil 是 Python 标准库中的一个模块,它提供各种高级文件操作。在文件复制方面,该库根据您是否要复制元数据或文件权限以及目标是否是目录,提供了多种选项。它属于 Python 基本实用程序模块的范畴。此模块有助于自动化文件和目录的复制和删除。
shutil.copy
shutil.copy() 方法将指定源文件(不包含元数据)复制到指定的目的地文件或目录,并返回新生成文件的路径。src 参数可以是字符串或路径型对象。
语法
以下是 shutil 库中 copy 方法的语法。
Shutil.copy(source_file, destination_file)
示例 1
在这个示例中,我们将学习使用 shutil 库将一个文件复制到另一个文件。
#program to copy a file using python #importing the python library shutil import shutil #copying the file example.txt into example2.txt shutil.copy('example.txt', 'example2.txt') print("The file is copied")
输出
以下代码的输出如下所示。
The file is copied
shutil.copy2()
shutil.copy2() 与 shutil.copy() 相同,区别在于 copy2() 还尝试保留文件元数据。
语法
以下是 shutil 库中 shutil.copy2 方法的语法。
shutil.copy2(source, destination, *, follow_symlinks = True)
copy2 方法的参数:
source - 包含源文件位置的字符串。
destination - 包含文件或目录目标路径的字符串。
如果 follow symlinks 传递 True - 此参数的默认值为 True。如果为 False 且 source 表示符号链接,则它尝试将所有元数据从源符号链接复制到新生成的目的地符号链接。此功能是特定于平台的。
返回类型 - 此过程返回新生成文件的路径,作为字符串。
示例 2
在这个示例中,我们将了解 shutil 库中 copy2 方法的工作原理。
#program to copy a file using python #importing the python library shutil import shutil #copying the file example.txt into example2.txt shutil.copy2('example.txt', 'example2.txt') print("The file is copied")
输出
上述代码的输出如下所示。
The file is copied
shutil.copyfileobj
如果您需要使用文件对象,shutil.copyfileobj 是最佳选择。该方法基本上将源文件对象的内容复制到目标类文件对象。您还可以选择一个与用于传输数据的缓冲区大小匹配的长度。不会保留文件权限,并且目录不能作为目标。不会复制元数据。
语法
以下是 shutil.copyfileobj 方法的语法。
shutil.copyfileobj(fsrc, fdst[, length])
shutil.copyfileobj 的参数如下:
Fsrc - 表示被复制源文件的类文件对象
Fdst - 一个称为 fdst 的类文件对象,表示将向其传输 fsrc 的文件。
length - 一个可选的整数值,指示缓冲区的大小。
示例 3
在这里,我们将了解如何在 shutil 库中使用 copyfileobj 方法。如上所述,此方法用于将源文件对象的内容复制到目标类文件对象。
#program to copy a file using python #importing the python library shutil import shutil #copying the file example.txt into example2.txt source_file = open('example.txt', 'rb') dest_file = open('example2.txt', 'wb') shutil.copyfileobj(source_file, dest_file) print("The file is copied")
输出
上述代码的输出显示如下。
The file is copied
os.system() 方法
子 shell 中的 system() 方法允许您立即运行任何操作系统命令或脚本。
命令或脚本必须作为参数传递给 system() 函数。此方法在内部使用标准 C 库函数。它的返回值是命令的退出状态。
语法
os.system(command)
system() 方法的参数如下所示。
command - 它是字符串类型,指示要执行的命令。
示例 4
在这个示例中,我们将看到如何使用 os.system() 方法复制文件。如下所示。我们导入所需的库,然后使用 system 方法将命令“copy example.txt example2.txt”以字符串的形式传递给 system 方法。
#program to copy a file using python #importing the python library OS import os #copying example.txt into example2.txt os.system('copy example.txt example2.txt')
输出
上述代码的输出显示如下。
sh: 1: copy: not found