📅  最后修改于: 2023-12-03 15:06:54.155000             🧑  作者: Mango
在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
中包含了与原目录完全一样的文件和子目录。