Bestanden in twee verschillende folders met elkaar vergelijken met behulp van Python

Foto’s. Ik heb er veel. Iedereen heeft al jaren een telefoon inclusief camera bij zich. Ik incluis. Dit leidt tot een berg foto’s over de jaren heen. Ik heb ook wat oude backups van deze foto’s in folders zitten. Ik ben nogal eens … fanatiek geweest met het maken van backups.

Dit heeft geleid tot meerdere folders met foto’s. Ik wist niet meer precies of folder A nou dezelfde foto’s bevatte als folder B. Het aantal items in de folders was verschillend, maar wie weet had ik veel foto’s dubbel!

Wat doet iedere zichzelf respecterende data nerd in zo’n geval?!

 Een kort Python script te schrijven wat onderzoekt of er overlap is natuurlijk! Met andere woorden, welke foto’s had ik dubbel?

Hieronder vind je het script.

Veel succes met het foto album!

# Programma dat de bestanden (en niet de subfolders) in twee verschillende folders met elkaar vergelijkt met als doel erachter te komen of er bepaalde bestanden ontbreken in de ene folder ten opzichte van de andere
import os

# Paths definiëren
PathFotoHardeschijf = 'c:\\Foto\'s'
PathFotoOnedrive = 'c:\\Users\\user1\\OneDrive\\Foto\'s'

# Lijst met alle items in de folders van de bovenstaande paths
FotoHardeschijf = os.listdir(PathFotoHardeschijf)   # 9 items
FotoOnedrive = os.listdir(PathFotoOnedrive)         # 8 items

# Bepalen welke lijst het meeste items heeft om te zien welke als eerste te gebruiken in de loop
print(f'Aantal items in variabele FotoHardeschijf: {str(len(FotoHardeschijf))}\nAantal items in variabele FotoOnedrive: {str(len(FotoOnedrive))}\n')

# Lege lijst creëren om de missende items in op te slaan
Ontbrekend = []

# Als het een bestand betreft en geen map, en het bestand niet voorkomt in variabele FotoOnedrive, zet hem dan in de lijst in variabele Ontbrekend
for bestand in FotoHardeschijf:
    if not os.path.isfile(os.path.abspath(os.path.join(PathFotoHardeschijf, bestand))): # Is dit geen bestand?
        continue                                                                        # Gan dan meteen door naar het begin van de loop zonder verder te gaan naar de if-statement hieronder. Oftewel, sla folders over.
    if bestand not in FotoOnedrive:
        Ontbrekend.append(bestand)

print(Ontbrekend)

Leave Comment

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *