Python копирует файлы с помощью шаблона - PullRequest
0 голосов
/ 29 августа 2018

Мне нужно скопировать файлы с включенным шаблоном, используя скрипт Python. Поскольку shutil поддерживает ignore_patterns для игнорирования файла. Есть ли способ включить шаблон для копирования файлов. В противном случае я должен написать код явно?

Заранее спасибо

EDIT

from shutil import copytree, ignore_patterns

source=r'SOURCE_PATH'
destination=r'DESTINATION_PATH'
copytree(source, destination, ignore=ignore_patterns('*.txt'))

Приведенный выше код скопировал файлы из dir, кроме указанного формата, но мне нужно что-то вроде этого ниже

from shutil import copytree, include_patterns

source=r'SOURCE_PATH'
destination=r'DESTINATION_PATH'
copytree(source, destination, ignore=include_patterns('*.txt'))

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

В shutil такой поддержки нет, если только вы не перегружаете игнор своим собственным методом. Но, например, использование glob гораздо проще.

import glob
import shutil
dest_dir = "C:/test"
for file in glob.glob(r'C:/*.txt'):
    print(file)
    shutil.copy(file, dest_dir)

Python копирует файлы по групповым символам

0 голосов
/ 29 августа 2018

Приведенное ниже решение отлично работает

 from fnmatch import fnmatch, filter
    from os.path import isdir, join
    from shutil import copytree

    def include_patterns(*patterns):
        """Factory function that can be used with copytree() ignore parameter.

        Arguments define a sequence of glob-style patterns
        that are used to specify what files to NOT ignore.
        Creates and returns a function that determines this for each directory
        in the file hierarchy rooted at the source directory when used with
        shutil.copytree().
        """
        def _ignore_patterns(path, names):
            keep = set(name for pattern in patterns
                                for name in filter(names, pattern))
            ignore = set(name for name in names
                            if name not in keep and not isdir(join(path, name)))
            return ignore
        return _ignore_patterns

    # sample usage

    copytree(src_directory, dst_directory,
         ignore=include_patterns('*.dwg', '*.dxf'))
0 голосов
/ 29 августа 2018

Ответ на этот вопрос уже здесь, я думаю. Пожалуйста, проверьте .

Python shutil copytree: используйте функцию игнорирования для сохранения определенных типов файлов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...