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 os
bibliotheek 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 ls
commando op de terminal.
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.