【问题标题】:Copying recursively in python3在python3中递归复制
【发布时间】:2020-09-29 07:13:35
【问题描述】:

我必须更多地了解python,我在python方面做得不多,所以我真的不知道如何开始这项任务。

我已经在这里阅读了一些关于堆栈溢出的问题,观看了一些 yt-videos 并用谷歌搜索了很多,但我不认为有一个与我的任务类似的问题。

假设我的目录如下所示:

主文件夹名为“Test”,其中有 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)

【问题讨论】:

  • 您有什么问题?您已经尝试解决什么问题了? (我们不会为您编写所有代码。)
  • 我只是在问如何开始使用它。我已经有了一些代码,但它不起作用 **** 代表我公司的名称,我不得不替换它。
  • 您是否希望将文件直接复制到目标文件夹而不维护源目录的结构?
  • 我想一步一步检查,文件夹是否为空,如果不为空,请将项目复制到我的目标文件夹并检查是否还有另一个文件夹,如果是,请深入并重做该功能。但是我不知道在python中到底怎么说,我的起点在哪里等等。我之前只做过scrapy,但是我不必使用很多python...

标签: python python-3.x recursion copy


【解决方案1】:

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

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)

【讨论】:

    猜你喜欢
    • 2012-01-12
    • 2022-06-29
    • 2022-11-30
    • 2014-05-01
    • 2017-04-23
    • 2012-11-11
    • 2015-08-19
    • 2013-10-19
    • 2011-05-27
    相关资源
    最近更新 更多