Вот еще один пример функции рекурсивного копирования, которая позволяет копировать содержимое каталога (включая подкаталоги) по одному файлу за раз, который я использовал для решения этой проблемы.
import os
import shutil
def recursive_copy(src, dest):
"""
Copy each file from src dir to dest dir, including sub-directories.
"""
for item in os.listdir(src):
file_path = os.path.join(src, item)
# if item is a file, copy it
if os.path.isfile(file_path):
shutil.copy(file_path, dest)
# else if item is a folder, recurse
elif os.path.isdir(file_path):
new_dest = os.path.join(dest, item)
os.mkdir(new_dest)
recursive_copy(file_path, new_dest)
РЕДАКТИРОВАТЬ: Если вы можете, определенно просто используйте shutil.copytree(src, dest)
.Для этого требуется, чтобы эта папка назначения еще не существовала.Если вам нужно скопировать файлы в существующую папку, описанный выше метод работает хорошо!