微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从多个文件夹中递归查找和复制文件

如何解决从多个文件夹中递归查找和复制文件

我想从多个文件夹中递归搜索数组中的一些文件

文件名数组的一个例子是 ['A_010720_X.txt','B_120720_Y.txt']

文件夹结构示例如下,我也可以将其作为数组提供,例如 ['A','B'] 和 ['2020-07-01','2020-07-12']。 “DL”对所有人都保持不变。

C:\A\2020-07-01\DL C:\B\2020-07-12\DL

我尝试使用shutil,但它似乎不能有效满足我的要求,因为我只能传递完整的文件名而不是通配符。我与shutil一起使用的代码可以工作但没有通配符和绝对完整的文件名和路径,例如下面的代码只会给我A_010720_X.txt

我相信要走的路是使用我以前没有使用过的 glob 或 pathlib,或者找不到一些类似于我的用例的好例子

    import shutil
    filenames_i_want = ['A_010720_X.txt','B_120720_Y.txt']
    RootDir1 = r'C:\A\2020-07-01\DL'
    TargetFolder = r'C:\ELK\LOGS\ATH\DEST'
    for root,dirs,files in os.walk((os.path.normpath(RootDir1)),topdown=False):
        for name in files:
            if name in filenames_i_want:
                print ("Found")
                SourceFolder = os.path.join(root,name)
                shutil.copy2(SourceFolder,TargetFolder) 

解决方法

假设它们都是 .txt 文件,我认为这应该满足您的需求。

import glob
import shutil

filenames_i_want = ['A_010720_X.txt','B_120720_Y.txt']
TargetFolder = r'C:\ELK\LOGS\ATH\DEST'
all_files = []
for directory in ['A','B']:
    files = glob.glob('C:\{}\*\DL\*.txt'.format(directory))
    all_files.append(files)
for file in all_files:
    if file in filenames_i_want:
        shutil.copy2(file,TargetFolder) 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。