如何在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 - 表示将传输fsrc的文件的类文件对象,称为fdst。

  • 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()方法允许您立即运行任何OS命令或脚本。

命令或脚本必须作为参数传递给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

更新于:2023年5月11日

527 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告