📌  相关文章
📜  使用Python将所有文件从一个目录复制到另一个目录(1)

📅  最后修改于: 2023-12-03 14:49:50.423000             🧑  作者: Mango

使用Python将所有文件从一个目录复制到另一个目录

简介

在日常工作中,有时候需要将一个目录中的所有文件复制到另一个目录中,这时可以使用Python来完成这个任务。

方式一:使用shutil模块

shutil模块是Python标准库中的一个模块,可以用于文件的复制、移动、删除等操作。

示例代码
import shutil

# 定义源目录和目标目录
src_dir = "/path/to/source/directory"
dst_dir = "/path/to/destination/directory"

# 使用shutil模块的copytree函数将源目录复制到目标目录
shutil.copytree(src_dir, dst_dir)
说明
  1. 首先导入shutil模块。
  2. 定义源目录和目标目录的路径。
  3. 使用shutil模块的copytree函数将源目录复制到目标目录。

copytree函数的详细参数说明:

shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,
                 ignore_dangling_symlinks=False)

参数说明:

  • src:要复制的源目录。
  • dst:目标目录。
  • symlinks:是否复制符号链接。
  • ignore:可选参数,用于指定一个函数,该函数接受要复制的目录名称和文件名称列表作为参数,返回要忽略的目录和文件的名称列表。
  • copy_function:复制文件时使用的函数,默认是copy2函数,可自定义。
  • ignore_dangling_symlinks:是否忽略指向不存在文件或目录的符号链接。
方式二:使用os模块和shutil模块

另一种方式是先遍历源目录中所有的文件和子目录,然后逐个复制到目标目录中。

示例代码
import os
import shutil

# 定义源目录和目标目录
src_dir = "/path/to/source/directory"
dst_dir = "/path/to/destination/directory"

# 遍历源目录中的所有文件和子目录
for root, dirs, files in os.walk(src_dir, topdown=False):
    for name in files:
        # 构造源文件路径和目标文件路径
        src_file = os.path.join(root, name)
        dst_file = src_file.replace(src_dir, dst_dir)
        # 复制文件
        shutil.copy2(src_file, dst_file)
    for name in dirs:
        # 构造源子目录路径和目标子目录路径
        src_subdir = os.path.join(root, name)
        dst_subdir = src_subdir.replace(src_dir, dst_dir)
        # 创建子目录
        if not os.path.exists(dst_subdir):
            os.makedirs(dst_subdir)
说明
  1. 首先导入os模块和shutil模块。
  2. 定义源目录和目标目录的路径。
  3. 使用os模块的walk函数遍历源目录中的所有文件和子目录。
  4. 逐个复制源目录中的文件,并将它们复制到目标目录中。
  5. 逐个创建源目录中的子目录,并将它们复制到目标目录中。

copy2函数的详细参数说明:

shutil.copy2(src, dst, *, follow_symlinks=True)

参数说明:

  • src:要复制的源文件。
  • dst:目标文件。
  • follow_symlinks:是否复制符号链接。
总结

使用Python将所有文件从一个目录复制到另一个目录非常简单,可以使用shutil模块或os模块和shutil模块的组合。其中,使用shutil模块更加方便和快捷,而os模块和shutil模块的组合则更灵活和可定制。根据具体的任务需求选择相应的方法即可。