📜  Python| shutil.copytree() 方法(1)

📅  最后修改于: 2023-12-03 15:04:22.659000             🧑  作者: Mango

Python | shutil.copytree() 方法

简介

Python中的shutil模块提供了一系列高级的文件操作功能,其中包括将一个目录及其子目录下的所有文件和文件夹复制到另一个目录中的方法shutil.copytree()。

用法
基本语法
shutil.copytree(src, dst, symlinks=False, ignore=None)
参数说明
  • src:要复制的源目录路径。
  • dst:要复制的目标目录路径。
  • symlinks:可选参数,默认为False,表示是否复制目录中的符号链接。
  • ignore:可选参数,由用户提供的函数或者无参函数,用于忽略不需要复制的文件或文件夹。
返回值

无返回值,仅用于复制源目录到目标目录。

示例
import shutil
import os

# 创建一个示例源目录
src_dir = os.path.join(os.getcwd(), 'src')
if not os.path.exists(src_dir):
    os.mkdir(src_dir)
    file1 = open(os.path.join(src_dir, 'file1.txt'), 'w')
    file1.write('Some contents here.\n')
    file1.close()
    os.mkdir(os.path.join(src_dir, 'subdir'))
    file2 = open(os.path.join(src_dir, 'subdir', 'file2.txt'), 'w')
    file2.write('Some contents here too.')
    file2.close()

# 创建示例目标目录
dst_dir = os.path.join(os.getcwd(), 'dst')
if os.path.exists(dst_dir):
    shutil.rmtree(dst_dir)
    os.mkdir(dst_dir)

# 复制源目录到目标目录
shutil.copytree(src_dir, dst_dir)

# 验证是否复制成功
assert os.path.exists(os.path.join(dst_dir, 'file1.txt'))
assert os.path.exists(os.path.join(dst_dir, 'subdir', 'file2.txt'))

# 打印消息提示
print('Directory copied successfully!')
输出

运行上述Python程序后,可以在消息窗口中看到以下输出:

Directory copied successfully!
注意事项
  • 如果目标目录已经存在,则会引发OSError异常。
  • 如果源目录中有符号链接(symlink)指向文件系统中的其他文件或目录,则我们可以使用symlinks参数来控制是否复制这些链接目标所对应的文件或目录,即传递True或False值。
  • 如果对于源目录中的某些文件或目录不想进行复制,则可以自定义一个函数或方法作为ignore参数的值,用于忽略这些文件或目录。这个函数可以接受包含源目录中所有文件夹和文件名称的列表作为参数,返回一个包含需要忽略文件和文件夹名称的列表。