我正在尝试编写一个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的方法。
答案 0 :(得分:2)
如果我的理解正确,您希望将glob
与recursive=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)