通过递归函数复制文件夹,子文件夹和文件在Python另一路径的路径(copy folder, sub

2019-09-30 15:17发布

我想一些文件夹和文件到另一个路径的路径复制。 例如,我想其中有一些其它的子文件夹和一些文件里面本身到另一个文件夹(DST)的文件夹(称为文件夹1)复制。 在我的程序,在第一,我要检查是否有一个名为folder1中的目标文件夹,如果没有文件夹,创建文件夹1名称的文件夹,然后复制的文件夹1的内容来定位。 此外,也许我们已经在文件夹1的目标路径,但也有其不存在目标的文件夹1一些子文件夹,我们必须使用递归函数,该函数。 这是我为了这个目的递归函数:

def CopyFol_Subfolders(src, src_folder, dst):
    Dir = next(os.walk(src))[1]
    sub_files = ""
    sub_files = next(os.walk(src))[2]
    if not os.path.exists(dst + "/" + src_folder):
        os.makedirs(dst + "/" + src_folder)
        shutil.copy2(src + "/" + src_folder, dst + "/" + src_folder)

    elif os.path.exists(src + "/" + src_folder) and is_exist_file(src+"/"+src_folder,dst+"/"+src_folder,sub_files):
        copy_files(sub_files, src+"/"+src_folder, dst+"/"+src_folder)
    else:
        subfolders = ""
        subfolders = next(os.walk(src + "/" + src_folder+"/"))[1]
        for folder in subfolders:
            CopyFol_Subfolders(src + "/" + src_folder, folder, dst + "/" + src_folder)

copy_files功能将文件从src +"/"+src_folderdst+"/"+src_folder

我感到困惑,这是行不通的。 我得到了不同的错误shutil.copy2它告诉我x is not a filex is a directory 。 可以请我的递归函数的某一个检查电路,让我知道这是什么问题呢?

Answer 1:

使用os.path.isdir代替os.path.exists以确保它只能是一个目录而不是一个文件。 而os.path.join是比我们串接路径字符串更好。

def CopyFol_Subfolders(src, dst):
    for item in os.listdir(src):
        s = os.path.join(src, item)
        d = os.path.join(dst, item)
        if os.path.isdir(s):
            CopyFol_Subfolders(s, d)
        else:
            shutil.copy2(s, d)


文章来源: copy folder, subfolders and files from a path to another path in python via a recursive function