вот моя проблема: допустим, я хочу создать функцию синхронизации файлов, которая просматривает все папки и подпапки двух одинаковых каталогов и обнаруживает все общие папки / подпапки этих двух каталогов. Я попробовал, объединив модуль os.walk с модулем filecmp. Вот как выглядит мой код:
import filecmp
import os
src=r"C:\Users\j2the\Documents\Test3"
dst=r"C:\Users\j2the\Documents\Test4"
comparison = filecmp.dircmp(dst, src)
for dirpath,dirnames,filenames in os.walk(src):
for folders in dirnames:
if folders in comparison.common_dirs:
print(folders)
src_folder=os.path.abspath(os.path.join(dirpath,folders))
dst_folder=os.path.abspath(os.path.join(dst,folders))
folder_comparison = filecmp.dircmp(dst_folder, src_folder)
for dirpath1,dirnames1,filenames1 in os.walk(src_folder):
for subfolders in dirnames1:
if subfolders in folder_comparison.common_dirs:
print(subfolders)
src_subfolder=os.path.abspath(os.path.join(dirpath1,subfolders))
dst_subfodler=os.path.abspath(os.path.join(dst_folder,subfolders))
subfolder_comparison=filecmp.dircmp(dst_subfodler,src_subfolder)
Это очень простой код. Однако этот код работает только с каталогами, которые имеют макс. 2 подпапки. Если бы я хотел проанализировать каталоги с большим количеством подпапок, мне пришлось бы добавить тонны вложенных циклов в мой код. Конечно, есть другой способ сделать это, верно? Я думал о создании цикла while, который будет проходить через каждую подпапку и сравнивать их, пока не останется подпапка, но я просто не мог понять, как это сделать. Любая помощь / вклад будет принята с благодарностью!