Hoe maak je een lijst van bestanden in een map met behulp van Python?

In deze handleiding behandelen we alles wat u moet weten over het weergeven van bestanden in een map met Python.

Python is een algemene taal, gebruikt in een verscheidenheid van gebieden zoals Data Science, Machine Learning, en zelfs in webontwikkeling. Er lijkt geen beperking te zijn in de toepassing van Python taal.

daarom lijkt het nogal triviaal dat Python gebruikt kan worden om bestanden en mappen in elk systeem weer te geven., Het doel van dit artikel is om de lezer te informeren over de manieren om een lijst van bestanden in een systeem met behulp van Python.

Toon alle bestanden in een map die Python gebruikt

voor de interactie met mappen in een systeem dat Python gebruikt, wordt de osbibliotheek gebruikt.

1. Met behulp van de’ os ‘ library

de methode die we gaan gebruiken voor ons motief is listdir(). Zoals de naam al doet vermoeden, wordt het gebruikt om items in mappen weer te geven.,

# Importing the os libraryimport os# The path for listing itemspath = '.'# The list of itemsfiles = os.listdir(path)# Loop to print each filename separatelyfor filename in files:print(filename)

Output:

game_file.pyhi-lo_pygame.pyJournaldevlist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp

Linux-gebruikers kunnen gemakkelijk overeenkomen met de bovenstaande uitvoer met behulp van de standaard lscommando op de terminal.

lijst Items met behulp van ‘ls’ Commando

zoals we kunnen zien dat de uitgangen van elke methode overeenkomen.

2., Met behulp van de ‘glob’ bibliotheek

glob is meestal een bestandsnaam patroon bibliotheek, maar het kan worden gebruikt om een lijst van items in de huidige map aan:

Output:

game_file.pyhi-lo_pygame.pyJournaldevlist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp

Het jokerteken '*' wordt gebruikt om alle items in de huidige map. Omdat we de items van de huidige map willen weergeven, moeten we de recursieve aard van glob() functie uitschakelen.

3., Toon alleen bestanden in de huidige map

in de bovenstaande methoden retourneerde de python-code alle items in de huidige map, ongeacht hun aard. We kunnen alleen de bestanden uitpakken met behulp van de path.isfile() functie in de os bibliotheek.

uitvoer:

game_file.pyhi-lo_pygame.pylist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp

in het bovenstaande codefragment wordt de begrijpelijkheid van de lijst gebruikt om alleen die items uit te filteren die daadwerkelijk een bestand zijn.,

een ander belangrijk ding om hier op te merken is dat de bovenstaande code niet werkt voor andere mappen omdat de variabele 'f' geen absoluut pad is, maar een relatief pad naar de huidige map.

Toon alle bestanden in een map recursief

om de bestanden in een map en de submappen af te drukken, moeten we ze recursief doorlopen.

1. Met behulp van de’ os ‘ library

met behulp van de walk() methode, kunnen we elke submap binnen een map één voor één doorlopen.,

Output:

de os.walk() methode volgt gewoon elke submap en extraheert de bestanden standaard op een top-down manier. Er zijn drie iterators gebruikt voor het doorlopen van de uitvoer van os.walk() functie:

  • path – deze variabele bevat de huidige map die de functie observeert tijdens een bepaalde iteratie
  • folders – deze variabele is een lijst van mappen binnen de 'path' map.,
  • files – een lijst van bestanden in de 'path' map.

de join() methode wordt gebruikt om de bestandsnaam samen te voegen met de bovenliggende map, waardoor we het relatieve pad naar het bestand krijgen.

2. Met behulp van de’ glob ‘ – bibliotheek

kan glob recursief elke map bezoeken en alle items uitpakken en retourneren.,

uitvoer:

het '**' symbool gebruikt samen met de variabele path vertelt de glob() functie om bestanden binnen een submap te matchen. De '*' vertelt de functie om overeen te komen met alle items in een map.

omdat we alleen de bestanden in de volledige map willen extraheren, filteren we de bestanden uit met behulp van de isfile() functie die eerder werd gebruikt.

een lijst van alle submappen in een map

in plaats van een lijst van bestanden, kunnen we een lijst van alle submappen aanwezig in een specifieke map.,

Output:

./Documents/Journaldev

het kleine verschil tussen het weergeven van bestanden en mappen is de selectie van iterator tijdens het proces van os.walk() functie. Voor bestanden, We herhalen over de bestanden variabele. Hier, we lus over de mappen variabele.

lijst Bestanden in een map met absoluut pad

zodra we weten hoe bestanden in een map moeten worden weergegeven, is het tonen van het absolute pad een fluitje van een cent. De methode abspath() geeft ons het absolute pad voor een bestand.,

uitvoer:

een ding om hier op te merken is dat abspath() moet worden voorzien van het relatieve pad van het bestand en dat is het doel van join() functie.

lijst Bestanden in een map door patronen te matchen

Er zijn meerdere manieren om bestandsnamen die overeenkomen met een bepaald patroon te filteren. Laten we ze allemaal één voor één doornemen.

1. Met behulp van de’ fnmatch ‘ bibliotheek

zoals de naam al doet vermoeden, is fnmatch een bestandsnaampatroonfilteringbibliotheek., Met behulp van fnmatch met onze standaard bestandsnaam extraheren bibliotheken, kunnen we die bestanden filteren die overeenkomen met een specifiek patroon.

Output:

List of files containing "file" in them./Documents/game_file.py./Documents/list_files1.py./Documents/list_files.py

de fnmatch() functie neemt twee parameters in, de bestandsnaam gevolgd door het patroon dat moet worden vergeleken. In de bovenstaande code kijken we naar alle bestanden die het woord file bevatten.

2. Gebruikmakend van de’ glob ‘ bibliotheek

zoals we al eerder hebben gezegd, is glob's het primaire doel is Filename pattern matching.,

uitvoer:

./Documents/list_files1.py

de bovenstaande reguliere expressie voor patroonafstemming '**/**.*' kan worden verklaard als:

3. Het gebruik van de’ pathlib ‘ bibliotheek

pathlib volgt een objectgeoriënteerde manier van interactie met het bestandssysteem. De functie rglob() in de bibliotheek kan gebruikt worden om recursief een lijst met bestanden te extraheren via een bepaald Padobject.

deze lijst met bestanden kan worden gefilterd met behulp van een patroon binnen de functie rglob().,

uitvoer:

Documents/my_program.cppDocuments/Journaldev/mastermind.py

het bovenstaande codefragment wordt gebruikt om alle bestanden te tonen die beginnen met de letter 'm'.

lijst van bestanden in een map met een specifieke extensie

lijst van bestanden met een specifieke extensie in Python is enigszins vergelijkbaar met pattern matching. Voor dit doel, moeten we een patroon met betrekking tot de bestandsextensie te creëren.

uitvoer:

de functie fnmatch() filtert de bestanden die eindigen op '.py', dat zijn python-bestanden., Als we bestanden met verschillende extensies willen uitpakken, dan moeten we dit deel van de code wijzigen. Om bijvoorbeeld alleen c++ – bestanden op te halen, moet '.cpp' worden gebruikt.

Dit vat de manieren samen om een lijst met bestanden in een map op te halen met behulp van Python.

conclusie

Er kunnen meerdere manieren zijn om een probleem op te lossen, en de meest handige is niet altijd het antwoord. Met betrekking tot dit artikel moet een Python programmeur zich bewust zijn van elke manier waarop we bestanden in een directory kunnen weergeven.

Share

Geef een reactie

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