Reputation: 5769
I'm wanting to make a little python script to check and compre the contents of two folders and all the files inside.
Folder A
Folder A
with Folder B
Folder C
but in the same folder structure as Folder A
Could anyone advise on how to do such a feat?
Upvotes: 1
Views: 16603
Reputation: 1053
Version 1
import os
folder1 = r'e:\Carte\BB\17 - Site Leadership\Principal 2022\ro'
folder2 = r'e:\Carte\BB\17 - Site Leadership\Principal\ro'
# Funcție pentru a returna lista de fișiere HTML dintr-un folder
def get_html_files(folder):
html_files = []
for root, dirs, files in os.walk(folder):
for file in files:
if file.lower().endswith('.html'):
html_files.append(file)
return html_files
# Obține lista de fișiere HTML pentru fiecare folder
html_files_folder1 = get_html_files(folder1)
html_files_folder2 = get_html_files(folder2)
# Verifică fișierele care se găsesc în folderul 1, dar nu în folderul 2
missing_files = [file for file in html_files_folder1 if file not in html_files_folder2]
# Afișează fișierele și folderul corespunzător în care se găsesc
for file in missing_files:
if file in html_files_folder1:
print(f"Fișierul {file} se găsește în folderul {folder1}")
if file in html_files_folder2:
print(f"Fișierul {file} se găsește în folderul {folder2}")
Version 2:
import os
folder1 = r'c:\Folder-Oana\extracted'
folder2 = r'c:\Folder-Oana\extracted\translated'
# Funcție pentru a returna lista de fișiere dintr-un folder, ignorând subfolderele
def get_files(folder):
files = []
for file in os.listdir(folder):
file_path = os.path.join(folder, file)
if os.path.isfile(file_path):
files.append(file)
return files
# Obține lista de fișiere pentru fiecare folder
files_folder1 = get_files(folder1)
files_folder2 = get_files(folder2)
# Compara fișierele din folder1 cu cele din folder2
missing_files = []
for file in files_folder1:
# Verifică dacă fișierul se află în folder1, dar nu în folder2
if file not in files_folder2:
# Adaugă fișierul la lista de fișiere lipsă
missing_files.append(file)
# Afisează fișierele lipsă
if missing_files:
print("Fișierele care se găsesc în folderul 1, dar nu în folderul 2, sunt:")
for file in missing_files:
print(file)
else:
print("Nu există fișiere lipsă în folderul 2 față de folderul 1.")
Upvotes: 3
Reputation: 445
I believe dircmp
from filecmp
does most of that for you:
https://docs.python.org/2/library/filecmp.html
You can just extend the basic example in this page. By using the attributes left_only
, right_only
and diff_files
you can easily identify missing and not 100% idendical files.
Upvotes: 5