在 python3 中递归复制

Copying recursively in python3

我还得在python上动动手指,python我没有做太多事情,所以我真的不知道如何开始这个任务。

我已经在此处阅读了一些关于堆栈溢出的问题,观看了一些 yt 视频并在 google 上搜索了大量内容,但我认为没有一个问题与我的任务类似。

假设我的目录如下所示:

主文件夹名为“Test”,其中有 2 个目录:1 和 2。

文件夹 1 还包含文件夹 11,其中存储了我必须复制的文件。

走完这些目录,应该回到开始“测试”,打开Folder 2,没有文件,再深入Folder 22,也没有文件,再深入文件夹 23,最后一个文件所在的位置,应该将其复制到我的目标文件夹。

不幸的是,我无法正确显示我的目录,堆栈溢出的列表格式对我不起作用。

我正在研究 Linux/Mac 并且使用了 python3。

代码

#recursive copy method
import os
import shutil, errno

root_src_dir = '/Users/yolomir/OneDrive/OneDrive - ****'
root_dst_dir = '/Users/yolomir/OneDrive/OneDrive - ****'

for src_dir, dirs, files in os.walk(root_src_dir):
    dst_dir = src_dir.replace(root_src_dir, root_dst_dir, 1)
    if not os.path.exist(dst_dir):
        os.makedirs(dst_dir)
    for file_ in files:
        src_file = os.path.join(src_dir, file_)
        dst_file = os.path.join(dst_dir, file_)
        if os.path.exist(dst_file):
            os.remove(dst_file)
        shutil.copy(src_file, dst_dir)

我自己和你们所有人都解决了这个问题,它需要一个脚本,它递归地检查您的目录并复制特定类型的所有文件:

from os import path
import shutil
import os
 
path = r"your/start/directory"
destination = r"your/destination/directory" 
files = []
# r=root, d=directories, f = files
for r, d, f in os.walk(path):
    for file in f:
        if '.yourfileextension' in file:
            files.append(os.path.join(r, file))
 
for file in files:
       if os.path.isfile(file):
           shutil.copy2(file, destination)