Как я копирую файлы с определенным расширением файла к папке в моем Python (версия 2.5) сценарий?

Цитирование Douglas Crockford 1:

Оператор && создает значение своего первого операнда, если первый операнд является ложным. В противном случае он выдает значение второго операнда.

blockquote>

1 Дуглас Крокфорд: JavaScript: Хорошие детали - Страница 16

20
задан jfs 18 November 2008 в 19:02
поделиться

4 ответа

import glob, os, shutil

files = glob.iglob(os.path.join(source_dir, "*.ext"))
for file in files:
    if os.path.isfile(file):
        shutil.copy2(file, dest_dir)

Read документация из shutil модуля для выбора функции, которая соответствует потребностям (shutil.copy (), shutil.copy2 () или shutil.copyfile ()).

32
ответ дан 29 November 2019 в 23:33
поделиться

Вот нерекурсивная версия с os.walk:

import fnmatch, os, shutil

def copyfiles(srcdir, dstdir, filepattern):
    def failed(exc):
        raise exc

    for dirpath, dirs, files in os.walk(srcdir, topdown=True, onerror=failed):
        for file in fnmatch.filter(files, filepattern):
            shutil.copy2(os.path.join(dirpath, file), dstdir)
        break # no recursion

Пример:

copyfiles(".", "test", "*.ext")
3
ответ дан 29 November 2019 в 23:33
поделиться

Если Вы не рекурсивно вызываете, Вы не должны идти ().

ответ Federico с шариком прекрасен, предполагая, что Вы не собираетесь иметь любые каталоги, названные ‘something.ext’. Иначе попробуйте:

import os, shutil

for basename in os.listdir(srcdir):
    if basename.endswith('.ext'):
        pathname = os.path.join(srcdir, basename)
        if os.path.isfile(pathname):
            shutil.copy2(pathname, dstdir)
7
ответ дан 29 November 2019 в 23:33
поделиться

Это обойдет дерево с подкаталогами. Можно сделать проверку os.path.isfile для создания этого немного более безопасным.

for root, dirs, files in os.walk(srcDir):
    for file in files:
        if file[-4:].lower() == '.jpg':
            shutil.copy(os.path.join(root, file), os.path.join(dest, file))
2
ответ дан 29 November 2019 в 23:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: