Skip to content

shutil 模块

shutil(或称为 shell 工具)模块中包含一些函数,让你在 Python 程序中复制、移动、改名和删除文件。要使用 shutil 的函数,首先需要 import shutil

shutil 模块提供了一些函数,用于复制文件和整个文件夹。

复制文件

调用 shutil.copy(source, destination),将路径 source 处的文件复制到路径 destination 处的文件夹(sourcedestination 都是字符串)。如果 destination 是一个文件名,它将作为被复制文件的新名字。该函数返回一个字符串,表示被复制文件的路径。

在交互式环境中输入以下代码,看看 shutil.copy() 的效果:

python
import shutil

shutil.copy('正心全栈编程.txt', './自动化办公课件')
shutil.copy('正心全栈编程.txt', './自动化办公课件/new_file.txt')

两种方式使用:

  • 第二个参数写某个文件夹位置, 则复制到该文件夹下
  • 第二个参数写某个文件路径, 复制到这个路径并且重命名

复制目录

shutil.copy() 将复制一个文件

shutil.copytree() 将复制整个文件夹,以及它包含的文件夹和文件。

调用 shutil.copytree(source, destination),将路径 source 处的文件夹,包括它的所有文件和子文件夹,复制到路径 destination 处的文件夹。sourcedestination 参数都是字符串。该函数返回一个字符串,是新复制的文件夹的路径。

在交互式环境中输入以下代码:

python
shutil.copytree('自动化办公课件', '自动化办公课件-备份')

shutil.copytree() 调用创建了一个新文件夹,名为 自动化办公课件-备份 ,其中的内容与原来的 自动化办公课件 文件夹一样。现在你已经备份了非常非常宝贵的 自动化办公课件 文件夹。

移动与改名

调用 shutil.move(source, destination),将路径 source 处的文件夹移动到路径 destination,并返回新位置的绝对路径的字符串。

如果 destination 指向一个文件夹,source 文件将移动到 destination 中,并保持原来的文件名。例如,在交互式环境中输入以下代码:

python
import shutil

# shutil.move('要移动的文件/文件夹','要移动到的位置')

shutil.move('正心全栈编程.txt', '自动化办公课件/')
shutil.move('正心全栈编程.txt', '自动化办公课件/正心全栈编程2.txt' )
shutil.move('自动化办公课件''自动化办公课件-备份/")

两种方式使用:

  • 第二个参数写某个文件夹位置, 则移动到该文件夹下
  • 第二个参数写某个文件路径, 移动到这个路径并且重命名

构成目的地的文件夹必须已经存在,否则 Python 会抛出异常。

删除文件和文件夹

利用 pathlib 模块中的函数,可以删除一个文件或一个空文件夹。但利用shutil模块,可以删除一个文件夹及其所有的内容。

  • 调用 pathlib.Path.rmdir(path) 将删除 path 处的文件夹。该文件夹必须为空,其中没有任何文件和文件夹。
  • 调用 shutil.rmtree(path) 将删除 path 处的文件夹,它包含的所有文件和文件夹都会被删除。