Как рекурсивно скопировать все файлы с определенным расширением в каталог с помощью Python? - PullRequest
1 голос
/ 10 июня 2019

Я пытаюсь написать функцию 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 Ответ

2 голосов
/ 10 июня 2019

Если я правильно понимаю, вы хотите 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...