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

时间:2019-06-10 14:06:14

标签: python python-2.7 file-management

我正在尝试编写一个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的方法。

1 个答案:

答案 0 :(得分:2)

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

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)