📜  使用Python递归复制目录(附示例)(1)

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

使用Python递归复制目录(附示例)

在Python中,复制一个目录及其子目录是一个常见的任务。本文将介绍如何使用递归来复制目录。

递归复制目录的基本原理

递归是一种解决问题的方法,它通过把一个大问题分解成多个小问题来实现。对于目录的复制来说,我们可以把它分解成多个小问题,即:先复制当前目录下的所有文件和子目录,再递归复制每一个子目录。这样就能实现整个目录的复制了。

代码示例

下面是一个实现递归复制目录的Python函数,它使用了os和shutil两个标准库:

import os
import shutil

def copydir(src, dst):
    if os.path.exists(dst):
        shutil.rmtree(dst)
    os.makedirs(dst)
    for name in os.listdir(src):
        srcname = os.path.join(src, name)
        dstname = os.path.join(dst, name)
        if os.path.isdir(srcname):
            copydir(srcname, dstname)
        else:
            shutil.copy2(srcname, dstname)

该函数的作用是将目录src及其子目录复制到目录dst中。如果dst已经存在,则先删除它,然后创建一个新的目录。接着,它遍历src中的所有文件和子目录,如果遇到子目录,则递归调用copydir函数,否则直接使用shutil.copy2函数来复制文件。注意,shutil.copy2函数会同时复制文件的元数据(比如创建时间、修改时间等)。

使用示例

假设我们有一个名为/home/old_dir/的目录,它包含了一些文件和子目录。现在我们想要将它复制到/home/new_dir/目录下。可以这样做:

copydir('/home/old_dir', '/home/new_dir')

运行这个命令后,原来的目录不受影响,新的目录/home/new_dir中包含了与原目录完全一样的文件和子目录。