繁体   English   中英

如何使用Python递归复制目录中具有特定扩展名的所有文件?

[英]How to recursively copy all files with a certain extension in a directory using Python?

我正在尝试编写一个Python函数,该函数将目录及其子目录中的所有.bmp文件复制到指定的目标目录中。

我尝试使用os.walk,但它仅进入第一个子目录,然后停止。 这是我到目前为止的内容:

def copy(src, dest):

    for root, dirs, files in os.walk(src):
        for file in files:
            if file[-4:].lower() == '.bmp':
                shutil.copy(os.path.join(root, file), os.path.join(dest, file))

我需要更改什么,以便它从每个子目录复制每个.bmp文件?

编辑:此代码实际上确实有效,源目录中的位图文件比预期的要少。 但是,对于我正在编写的程序,我更喜欢使用如下所示的glob的方法。

如果我理解正确,那么您希望使用带有recursive=True glob ,它与**说明符一起将递归遍历目录并查找所有满足格式说明符的文件:

import glob
import os
import shutil

def copy(src, dest):
    for file_path in glob.glob(os.path.join(src, '**', '*.bmp'), recursive=True):
        new_path = os.path.join(dest, os.path.basename(file_path))
        shutil.copy(file_path, new_path)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM