Пишу скрипт, который сравнивает содержимое 2-х папок, и если в одной из них не хватает какого-то файла, то он должен туда скопироваться. Вот то, что у меня получилось:
import os import shutil PathToFirstFolder = r'C:\pyt' # Указываем путь к первой директории PathToSecondFolder = r'D:\pyt' # Указывем путь к второй директории FilesOnFirstFolder = [] # Список файлов в первой директории FilesOnSecondFolder = [] # Список файлов во второй директории ResultFilesOnFirstFolder = [] # Уникальные файлы в первой директории ResultFilesOnSecondFolder= [] # Уникальные файлы во второй директории #Формируем список файлов в первой директории #Проверяем существование директорий: #первой директории if os.path.exists(PathToFirstFolder) == False: print ("Путь к директории",PathToFirstFolder,"не найден, проверте правильность пути") #второй директории elif os.path.exists(PathToSecondFolder) == False: print ("Путь к директории",PathToSecondFolder,"не найден, проверте правильность пути") #Если директории существуют, то формируем списки файлов: else: #Сканируем содержимое первой директории, включая поддиректории for root, dirs, files in os.walk(PathToFirstFolder): for name in files: #Добавляем в список относительные пути к файлам первой директории FilesOnFirstFolder.append(os.path.join(root, name)[len(PathToFirstFolder):]) #Дублируем записи из списка файлов первой директории в список ункиальных файлов первой директории ResultFilesOnFirstFolder = FilesOnFirstFolder #Сканируем содержимое второй директории, включая поддиректории for root, dirs, files in os.walk(PathToSecondFolder): for name in files: #Добавляем в список относительные пути к файлам второй директории FilesOnSecondFolder.append(os.path.join(root, name)[len(PathToSecondFolder):]) #Дублируем записи из списка файлов второй директории в список уникальных файлов второй директории ResultFilesOnSecondFolder = FilesOnSecondFolder #Удаляем записи из списка уникальных файлов первой директории, которые есть в списке файлов второй директории #Проходим по списку файлов второй директории for i in FilesOnSecondFolder: #Если такая запись есть в списке уникальных файлов первой директории, то if i in ResultFilesOnFirstFolder: #Удаляем её из списка уникальных файлов первой директории ResultFilesOnFirstFolder.remove(i) #Удаляем записи из списка уникальных файлов второй директории, которые есть в списке файлов первой директории #Проходим по списку файлов первой директории for i in FilesOnFirstFolder: #Если такая запись есть в списке уникальных файлов второй директории, то if i in ResultFilesOnSecondFolder: #Удаляем её из списка уникальных файлов второй директории ResultFilesOnSecondFolder.remove(i) #Выводим на экран список уникальных файлов в первой директории print () print ('###############################################') print ('Список недостающих файлов в '+PathToSecondFolder+':') print () #Проходим по списку уникальных файлов первой директории for i in ResultFilesOnFirstFolder: print(PathToFirstFolder+i) print(PathToFirstFolder+i) #и копируем их во вторую директорию shutil.copy2(PathToFirstFolder+i,PathToSecondFolder+i)
C:\pyt\
|---folder1
| `---folder11
| `---text111.txt
`---folder2
`---folder21
`---text211.txt
D:\pyt\
`---folder1
`---folder11
Файл “text111.txt” копируется без проблем, а вот файл “text211.txt” не копируется т.к. отсутствует директория “folder2” с поддиректорией “folder21” в папке “D:\pyt\”.
Вопрос: как при помощи скрипта проверить есть они или нету, и если нету, то определить их имя и создать в папке “D:\pyt\”?
приводимый код делает не то что вы заказывали, но может оно и к лучшему?