【问题标题】:how to copy all csv files from different source folders into target as per source folders using python?如何使用python根据源文件夹将所有csv文件从不同的源文件夹复制到目标中?
【发布时间】:2021-02-25 11:04:28
【问题描述】:

我有如下代码从不同的源文件夹复制所有 *.csv 文件,但我想根据源复制到不同的文件夹中,我可以将所有 csv 文件复制到单个文件夹,但我希望它到不同的文件夹作为源文件夹。

import os
import shutil
import fnmatch

dir = 'C:\\data\\projects\\'
patterns = ['project1','project2']
dest = 'D:\\data\\projects\\'

for root, dirs, files in os.walk(dir):

    for pattern in patterns:

        for filename in fnmatch.filter(files, '*.csv'):
            source = (os.path.join(root, filename))
            print(source)
            shutil.copy(source, dest)

【问题讨论】:

  • 而不是在copy() 方法中传递dest 传递所需的位置?

标签: python python-3.x design-patterns


【解决方案1】:

您可以使用os.path.relpath 提取通用方法的子路径,并使用os.makedirs 在目标上创建缺少的目录:

    ...
    for filename in fnmatch.filter(files, '*.csv'):
        source = (os.path.join(root, filename))
        print(source)
        rel = os.path.relpath(root, dir)
        curdest = os.path.join(dest, rel)
        if not os.path.exists(curdest):
            os.makedirs(curdest, exist_ok=True)
        shutil.copy(source, curdest)

【讨论】:

  • 感谢您的帮助,感谢您的帮助。
  • 我们可以跳过 curdest = os.path.join(dest, rel) 中的一个子文件夹吗?我们想忽略一个输出文件夹并根据源复制文件,但忽略最后一个文件夹。
猜你喜欢
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
相关资源
最近更新 更多