копирование нескольких файлов в python
Как скопировать все файлы из одного каталога в другой в Python. У меня есть исходный путь и путь назначения в строку.
5 ответов:
можно использовать ОС.listdir() чтобы получить файлы в исходном каталоге, ОС.путь.isfile() чтобы увидеть, являются ли они обычными файлами (включая символические ссылки на системах *nix) и shutil.копировать для копирования.
следующий код копирует только файлы из исходного каталога в целевой каталог (я предполагаю, что вы не хотите никаких подкаталогов копируется).
import os import shutil src_files = os.listdir(src) for file_name in src_files: full_file_name = os.path.join(src, file_name) if (os.path.isfile(full_file_name)): shutil.copy(full_file_name, dest)
Если вы не хотите, чтобы скопировать все дерево (с подкаталогами и т. д.), использовать или
glob.glob("path/to/dir/*.*")
чтобы получить список всех имен файлов, выполните цикл по списку и используйтеshutil.copy
для копирования каждого файла.for filename in glob.glob(os.path.join(source_dir, '*.*')): shutil.copy(filename, dest_dir)
посмотреть shutil в Python docs, в частности copytree.
def recursive_copy_files(source_path, destination_path, override=False): """ Recursive copies files from source to destination directory. :param source_path: source directory :param destination_path: destination directory :param override if True all files will be overridden otherwise skip if file exist :return: count of copied files """ files_count = 0 if not os.path.exists(destination_path): os.mkdir(destination_path) items = glob.glob(source_path + '/*') for item in items: if os.path.isdir(item): path = os.path.join(destination_path, item.split('/')[-1]) files_count += recursive_copy_files(source_path=item, destination_path=path, override=override) else: file = os.path.join(destination_path, item.split('/')[-1]) if not os.path.exists(file) or override: shutil.copyfile(item, file) files_count += 1 return files_count