Python: Bestanden in een directory weergeven - Gids voor moderne ontwikkeling

17 juni 2025

Op het gebied van softwareontwikkeling zijn efficiënte bestandssysteembewerkingen fundamenteel voor het bouwen van robuuste toepassingen. Of je nu een dataverwerkingslijn, een content management systeem of een cloud-gebaseerde oplossing ontwikkelt, de mogelijkheid om bestanden in een map op te sommen is een fundamentele taak. Python, met zijn eenvoud en veelzijdigheid, biedt krachtige gereedschappen om dergelijke bewerkingen naadloos uit te voeren. In deze handleiding onderzoeken we hoe je een lijst van bestanden in een map maakt met Python, waarbij we verschillende methoden, best practices en toepassingen uit de praktijk behandelen. Als leider in het leveren van geavanceerde IT-oplossingen maakt Carmatec gebruik van de mogelijkheden van Python om bedrijven te voorzien van schaalbare en efficiënte software. Laten we erin duiken!

Inleiding tot bestandssysteembewerkingen in Python

Python staat bekend om zijn gebruiksgemak en uitgebreide standaardbibliotheek, waardoor het een veelgebruikte taal is voor ontwikkelaars in verschillende branches. Bestandssysteem operaties, zoals het opsommen van bestanden in een map, zijn van cruciaal belang voor taken zoals gegevensinvoer, bestandsbeheer en automatisering. Python biedt meerdere modules voor interactie met het bestandssysteem, waaronder os, pathlib en glob. Elke module biedt unieke voordelen voor verschillende gebruikssituaties en voorkeuren van ontwikkelaars.

Bij Carmatec begrijpen we hoe belangrijk het is om het juiste gereedschap voor de klus te kiezen. Onze expertise in Python-ontwikkeling stelt ons in staat om oplossingen te bouwen die prestaties, schaalbaarheid en onderhoudbaarheid optimaliseren. In dit artikel behandelen we:

  • Verschillende methoden om bestanden in een map op te sommen
  • Praktische codevoorbeelden met uitleg
  • Foutafhandeling en best practices
  • Geavanceerde technieken voor het filteren en sorteren van bestanden
  • Toepassingen in de echte wereld die relevant zijn voor Carmatecs klantenkring
  • Prestatieoverwegingen voor grootschalige systemen

Tegen het einde heb je een grondig begrip van hoe je bestanden in Python opsomt en hoe deze technieken kunnen worden toegepast in professionele softwareontwikkeling.

Methode 1: Gebruik de os Module

De os module is Python's traditionele benadering van interactie met het besturingssysteem. Het biedt functies zoals os.listdir(), os.walk()en os.scandir() om bestanden en mappen op te sommen.

Gebruik os.listdir()

De os.listdir() functie retourneert een lijst met alle items (bestanden en mappen) in een opgegeven map. Hier is een eenvoudig voorbeeld:

python
importeer os

# Geef het pad van de map op
directory = "C:/Users/Documenten".

# Maak een lijst van alle vermeldingen in de directory
vermeldingen = os.listdir(directory)

# Druk de vermeldingen af
voor item in entries:
print(entry)

Uitgang (voorbeeld):

document1.txt
foto.jpg
submap

Uitleg:

  • os.listdir(directory) retourneert een lijst met tekenreeksen die de namen van bestanden en mappen vertegenwoordigen.
  • De functie maakt geen onderscheid tussen bestanden en mappen, dus er zijn extra controles nodig als je alleen bestanden wilt weergeven.

Om alleen bestanden op te sommen, kun je os.listdir() met os.path.isfile():

python
importeer os

directory = "C:/Users/Documenten".

# Alleen bestanden weergeven
bestanden = [entry voor entry in os.listdir(directory) if os.path.isfile(os.path.join(directory, entry))]

voor bestand in bestanden:
print(bestand)

Uitgang (voorbeeld):

document1.txt
foto.jpg

Belangrijke punten:

  • Gebruik os.path.join() om platformonafhankelijke bestandspaden te maken.
  • os.listdir() is eenvoudig, maar beperkt voor complexe bestandssysteemverkenningen.
Gebruik os.scandir()

Geïntroduceerd in Python 3.5, os.scandir() is efficiënter dan os.listdir() omdat het een iterator van DirEntry objecten, die metadata geven zoals bestandstype en -grootte zonder extra systeemaanroepen.

python
importeer os

directory = "C:/Users/Documenten".

# Gebruik scandir om bestanden op te sommen
met os.scandir(directory) als entries:
    voor entry in entries:
        if entry.is_file():
            print(f"Bestand: {entry.naam}, Grootte: {entry.stat().st_size} bytes")

Uitgang (voorbeeld):

Bestand: document1.txt, Grootte: 1024 bytes
Bestand: photo.jpg, Grootte: 52428 bytes

Voordelen:

  • os.scandir() is geheugenefficiënt voor grote mappen.
  • DirEntry objecten bieden directe toegang tot metagegevens van bestanden (bijv, is_file(), stat()).

Methode 2: Gebruik de pathlib Module

De pathlib module, geïntroduceerd in Python 3.4, biedt een objectgeoriënteerde benadering van bestandssysteem operaties. Het is modern, intuïtief en platformonafhankelijk, waardoor het de voorkeur heeft van veel ontwikkelaars.

Bestanden weergeven met pathlib

Zo maak je een lijst van bestanden met pathlib:

python
van pathlib importeer Path

# Geef het pad van de map op
map = Pad("C:/Users/Documenten")

# Lijst van alle bestanden in de directory
bestanden = [entry.naam voor entry in directory.iterdir() if entry.is_file()]

voor bestand in bestanden:
    print(bestand)

Uitgang (voorbeeld):

document1.txt
foto.jpg

Uitleg:

  • Pad(map) creëert een Pad object dat de map vertegenwoordigt.
  • iterdir() levert Pad objecten voor elk item in de map.
  • is_bestand() controleert of de invoer een bestand is.
Recursieve lijst met pathlib

Om bestanden in een map en zijn submappen op te sommen, gebruik je glob() of rglob():

python
van pathlib importeer Path

directory = Path("C:/Users/Documenten")

# Alle tekstbestanden recursief weergeven
tekstbestanden = directory.rglob("*.txt")

voor bestand in text_files:
    print(bestand)

Uitgang (voorbeeld):

C:^GebruikersDocumentenstuk1.txt
C:gebruikers_documenten_submap_notities.txt

Voordelen:

  • pathlib is leesbaarder en elimineert de noodzaak voor os.path.join().
  • Het ondersteunt patroonherkenning met glob() en rglob().

Methode 3: Gebruik de glob Module

De glob module is ontworpen voor het matchen van bestanden op basis van patronen. Het is ideaal voor het filteren van bestanden op extensie- of naampatronen.

Basisgebruik van glob
python
import glob

# Toon alle tekstbestanden in een map
tekstbestanden = glob.glob("C:/Users/Documenten/*.txt")

voor bestand in text_files:
    print(bestand)

Uitgang (voorbeeld):

C:^GebruikersDocumentenstuk1.txt

Recursief zoeken met glob

Om recursief te zoeken, gebruik je ** met recursief=waar:

python
import glob

# Alle tekstbestanden recursief weergeven
tekstbestanden = glob.glob("C:/Users/Documenten/**/*.txt", recursief=waar)

voor bestand in text_files:
    print(bestand)

Uitgang (voorbeeld):

C:^GebruikersDocumentenstuk1.txt
C:gebruikers_documenten_submap_notities.txt

Voordelen:

  • glob is uitstekend voor het filteren van bestanden op patronen (bijv. glob is uitstekend voor het filteren van bestanden op patronen (bijv, *.txt, *.jpg).
  • Het is eenvoudig en integreert goed met andere Python-code.

Foutafhandeling en beste praktijken

Bij het weergeven van bestanden kunnen fouten optreden, zoals ontbrekende mappen of problemen met toestemmingen. Een goede foutafhandeling zorgt voor robuuste code.

Voorbeeld met foutafhandeling
python
van pathlib importeer Path

def lijst_bestanden(directory_pad):
    try:
        directory = Path(directory_path)
        Als directory.exists() niet bestaat:
             print(f"Fout: Directory '{directory_path}' bestaat niet.")
             return
        als niet directory.is_dir():
            print(f"Fout: '{directory_path}' is geen directory.")
            terugkeren
        voor item in directory.iterdir():
            if entry.is_file():
                print(f"Bestand: {entry.naam}")
    except PermissionError:
        print(f"Fout: Toestemming geweigerd voor '{directory_pad}'.")
    except Uitzondering als e:
        print(f"Onverwachte fout: {str(e)}")

# Test de functie
lijst_bestanden("C:/Users/Documenten")
lijst_bestanden("C:/Ongeldige/Directory")

Uitgang (voorbeeld):

Bestand: document1.txt
Bestand: foto.jpg
Fout: Directory ‘C:\InvalidDirectory’ bestaat niet.

Beste praktijken:

  • Invoer valideren: Controleer of de map bestaat en toegankelijk is.
  • Contextmanagers gebruiken: Gebruik met voor os.scandir() om ervoor te zorgen dat bronnen worden vrijgegeven.
  • Uitzonderingen afhandelen: Vang specifieke fouten op zoals PermissionError of FileNotFoundError.
  • Gebruik pathlib voor Moderne Code: Het is leesbaarder en draagbaarder.
  • Logfouten: Log in productie fouten in een bestand of monitoringsysteem.

Technieken voor gevorderden

Bestanden filteren op grootte of wijzigingstijd

Om bestanden te filteren op basis van metadata, gebruik je os of pathlib:

python
van pathlib importeer Path
uit datetime importeer datetime, timedelta

directory = Path("C:/Users/Documenten")
one_week_ago = datetime.now() - timedelta(days=7)

# Lijst bestanden gewijzigd in de laatste week
recente_bestanden = [
    entry.naam voor entry in directory.iterdir()
    if entry.is_file() and datetime.fromtimestamp(entry.stat().st_mtime) > one_week_ago
]

voor bestand in recente_bestanden:
    print(bestand)
Bestanden sorteren

Sorteer bestanden op naam, grootte of wijzigingstijd:

python
van pathlib importeer Path

directory = Path("C:/Users/Documenten")

# Bestanden sorteren op grootte (grootste eerst)
bestanden = gesorteerd(
    [entry voor entry in directory.iterdir() als entry.is_file()],
    key=lambda x: x.stat().st_size,
    omgekeerd=waar
)

voor bestand in bestanden:
    print(f"Bestand: {bestand.naam}, Grootte: {bestand.stat().st_grootte} bytes")

Toepassingen in de praktijk bij Carmatec

Bij Carmatec gebruiken we de mogelijkheden van Python's bestandssysteem om oplossingen te bouwen voor uiteenlopende branches. Hier volgen enkele voorbeelden:

  • Pijplijnen voor gegevensverwerking: Het opsommen van bestanden in een map is cruciaal voor het opnemen van datasets in machine learning of analyseprojecten. Python's glob module helpt bij het filteren van relevante bestanden (bijv. CSV of JSON).
  • Contentbeheersystemen: Onze CMS oplossingen maken gebruik van bestandslijsten om mediabestanddelen te beheren, zodat ze efficiënt kunnen worden teruggevonden en georganiseerd.
  • Automatiseringsscripts: We ontwikkelen scripts om mappen te controleren op nieuwe bestanden, waardoor workflows zoals back-ups of meldingen worden geactiveerd.
  • Cloudintegratie: In cloud-gebaseerde toepassingen vermelden we bestanden in opslagbuckets (bijv. AWS S3) met behulp van Python SDK's, waarbij we de logica voor het vermelden van mappen aanpassen aan gedistribueerde systemen.

Door de bestandssysteemtools van Python te combineren met onze expertise op het gebied van cloud, AI en webontwikkeling, levert Carmatec oplossingen die bedrijfswaarde opleveren.

Prestatieoverwegingen

Bij het weergeven van bestanden in grote mappen (bijvoorbeeld duizenden bestanden) is prestatie belangrijk. Dit is hoe je kunt optimaliseren:

  • Gebruik os.scandir(): Het is sneller dan os.listdir() voor grote mappen.
  • Vermijd onnodige metadata: Haal alleen vereiste bestandsattributen op (bijv. naam) om het aantal systeemaanroepen te verminderen.
  • Generatoren gebruiken: Methoden zoals pathlib.iterdir() en os.scandir() Invoer op een luie manier opgeven, om geheugen te besparen.
  • Parallelliseren voor grote mappen: Gebruik voor grote mappen multiprocessing om bestandsvermeldingen te parallelliseren (met voorzichtigheid om I/O-knelpunten te vermijden).

Voorbeeld van parallelle bestandsopname:

python
van pathlib importeer Path
van multiprocessing importeer Pool

def process_file(entry):
    if entry.is_file():
        return entry.name
    return geen

directory = Path("C:/Users/Documents")
bestanden = directory.iterdir()

met pool() als pool:
    file_names = [name for name in pool.map(process_file, files) if name]

voor bestand in bestandsnamen:
    print(bestand)

Conclusie

Het opsommen van bestanden in een map is een bedrieglijk eenvoudige taak die ten grondslag ligt aan veel complexe toepassingen. Python's os, pathliben glob modules bieden flexibele, krachtige hulpmiddelen om deze taak efficiënt uit te voeren. Door het volgen van best practices zoals foutafhandeling, het gebruik van moderne API's zoals pathlib, en het optimaliseren voor prestaties, kunnen ontwikkelaars robuuste bestandssysteembewerkingen bouwen.

Op Carmatec, maken we gebruik van de mogelijkheden van Python om innovatieve softwareoplossingen afgestemd op de behoeften van onze klanten. Of het nu gaat om het automatiseren van bestandsverwerking, het bouwen van datapijplijnen of het ontwikkelen van cloud-native toepassingen, Onze expertise garandeert hoogwaardige, schaalbare resultaten. Als u Python wilt gebruiken voor uw volgende project, contact opnemen met Carmatec vandaag nog om te bekijken hoe we jouw visie kunnen omzetten in realiteit.