Использование Python для копирования структуры каталогов - PullRequest
3 голосов
/ 10 августа 2011

Можно ли написать скрипт на python, чтобы сделать следующее:

Basic Operation : copy files with the proper directory structure.

Учитывая список имен файлов, программа должна сканировать каталог и копировать файлы в каталоге в файл.каталог назначения, поддерживающий структуру папок.Это что-то вроде функции «Экспорт файловой системы путем создания соответствующих подпапок» в eclipse.

Ответы [ 2 ]

6 голосов
/ 10 августа 2011

Вы можете использовать shutil.copytree .

Обновление: Вы можете взглянуть на исходный код shutil.py , чтобы увидетькак это реализовано.

5 голосов
/ 24 июля 2014

Обновление: Я только что увидел, что вопрос заключается в копировании структуры каталогов и файлов. Мой ответ ниже для структуры каталогов только без файлов и Python3 только как указано yossi. Я все еще хотел бы оставить свой ответ как есть и надеюсь, что его не будут опускать.

Сильвиубоган очень помог мне в решении проблемы (с которой я тоже сталкивался несколько раз), поэтому вот мой подход:

shutil.copytree() принимает copy_function, поэтому все, что вам нужно, это функция копирования, которая не копирует файлы. Вот слегка измененная версия shutil.copy2(), которая делает это:

def copy_dir(src, dst, *, follow_sym=True):
    if os.path.isdir(dst):
        dst = os.path.join(dst, os.path.basename(src))
    if os.path.isdir(src):
        shutil.copyfile(src, dst, follow_symlinks=follow_sym)
        shutil.copystat(src, dst, follow_symlinks=follow_sym)
    return dst

А затем вызов shutil.copytree(source, target, copy_function=copy_dir) воссоздает структуру папок и подпапок из source в target.

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