在 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)
我还得在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)