如何解决在python3中递归复制
我必须更多地了解python,我在python方面做得并不多,所以我真的不知道如何开始执行此任务。
我已经在此处阅读了有关堆栈溢出的一些问题,观看了一些yt视频,还用了Google搜索了一堆,但是我不认为有一个问题与我的任务类似。
可以说我的目录如下:
主文件夹称为“测试”,其中有2个目录:1和2。
文件夹1还包含文件夹11,我必须复制的文件存储在该文件夹中。
浏览完这些目录后,它应该回到开始“测试”的位置,打开文件夹2,那里没有文件,因此它深入到文件夹22中,也没有文件,因此它再次深入到文件夹23中。 ,最后一个文件所在的位置,应该将其复制到我的目标文件夹中。
不幸的是,我无法正确显示目录,堆栈溢出的列表格式对我的idk不起作用。
我正在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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。