Alle bestanden van een map ophalen

  1. os.listdir
  2. os.walk
  3. glob.glob

Je zou minstens 3 methoden om alle bestanden van een map, met behulp van Python functies hebben os.listdir , os.walk , glob.glob.

Hieronder staat het vermoeden van deze tutorial,

  1. Python-versie - Python 3
  2. De mapnaam is dirPath en deze bestaat in het systeem, daarom hoeven we het bestaan ​​van de map niet te controleren.

os.listdir

os.listdir toont alle bestanden en mappen in de map, daarom heeft het extra code nodig om bestanden uit het resultaat te filteren.

import os
dirPath = r"C:\git\DelftStack\content"
result = [f for f in os.listdir(dirPath) if os.path.isfile(os.path.join(dirPath, f))]
print(result)

os.listdir geeft alleen het relatieve pad van de bestanden of mappen terug met verwijzing naar dirPath , en de os.path.isfile functie heeft het volledige pad nodig om te controleren of het een bestand is of niet, daarom moeten we gebruiken os.path.join om de dirPath en de resultaten te combineren van os.listdir om het volledige pad van beide bestanden te krijgen of paden.

os.walk

os.walk genereert de bestandsnamen in de gegeven map door de boom van boven naar beneden (standaard) of van onder naar boven te doorlopen. Het levert een 3-tupel ( dirpath , dirname , filenames ) telkens als het loopt naar de map in de boom (met inbegrip van de top zelf).

Alle bestanden zijn opgenomen in de tuple voor de eerste opbrengst van os.walk , daarom is een Pythonic-manier

import os
dirPath = r"C:\git\DelftStack\content"
result = next(os.walk(dirPath))[2]
print(result)

glob.glob

De glob module vindt alle padnamen die overeenkomen met het gegeven specifieke patroon volgens de regels die in de Unix-shell worden gebruikt. glob.glob geeft de lijst met padnamen terug die overeenkomen met het gegeven padnaampatroon. Het bestandspad heeft het patroon van *.* , dat is wat zal worden doorgegeven glob.glob als het invoerargument.

import glob
dirPathPattern = r"C:\git\DelftStack\content\*.*"
result = glog.glob(dirPathPattern)
print(result)

glob.glob geeft als resultaat het volledige pad van de overeenkomende bestanden C:\git\DelftStack\content\about.rst.

Waarschuwing

Het resultaat van de glob.glob hier getoonde methode kan niet garanderen dat het alleen bestanden zijn, omdat het alleen controleert of de padnaam overeenkomt met het patroon, maar niet of het een bestand of een map is.

Als een map bijvoorbeeld een naampatroon heeft test.test , wordt deze map ook opgenomen in het resultaat.

Als u ervoor wilt zorgen dat de uitvoer alleen bestanden bevat, moet u dit verifiëren met de functie os.path.isfile.

Gerelateerde Artikelen - Python File

  • Een bestand en map verwijderen
  • Hoe tekst aan een bestand in Python toe te voegen
  • Hoe te controleren of een bestand bestaat in Python
  • Gerelateerde Artikelen - Python Dictionary

  • Een bestand en map verwijderen
  • Hoe tekst aan een bestand in Python toe te voegen
  • Hoe te controleren of een bestand bestaat in Python