Bestanden met een bepaalde extensie alleen in Python vinden
-
glob.glob
bestandszoekmethode -
os.listdir()
bestandszoekmethode -
pathlib.glob
bestandszoekmethode - Zoek bestanden met een bepaalde extensie in de map en de bijbehorende submappen
-
pathlib
module zoekbestanden recursief

glob.glob
bestandszoekmethode
We kunnen de glob.glob
module gebruiken om de bestanden met een bepaalde extensie alleen in Python te vinden.
import glob
targetPattern = r"C:\Test\*.txt"
glob.glob(targetPattern)
De bovenstaande codes laten zien hoe u de bestanden met de extensie txt
in de map kunt vinden C:\Test
.
os.listdir()
bestandszoekmethode
os.listdir()
functie toont alle bestanden in de gegeven map, zonder de informatie over het bestandspad. Je kan de bestanden met de specifieke extensie uitpakken met behulp van de str.endswith()
functie.
>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [_ for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['test.txt', 'test1.txt']
U moet het volledige pad met os.path.join()
functie construeren.
>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [os.path.join(fileDir, _) for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test1.txt']
pathlib.glob
bestandszoekmethode
pathlib
module is geïntroduceerd in Python 3.4 die objectgeoriënteerde bestandssysteempaden biedt. Het biedt twee stijlen: Windows-paden in Windows OS en POSIX-paden in Unix-achtige systemen.
>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt')]
Het resultaat wordt weergegeven met WindowsPath
en je kan het resultaat converteren naar de stringvoorstelling door toe te voegen str()
, zoals
>>> [str(_) for _ in pathlib.Path(fileDir).glob(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test.txt']
Zoek bestanden met een bepaalde extensie in de map en de bijbehorende submappen
Het patroon C:\Test\*.txt
vindt alleen de txt
bestanden in de map C:\Test
, maar niet in de submappen. Als u ook txt
bestanden in de submappen wilt vinden , kan je het patroon een beetje wijzigen.
import glob
targetPattern = r"C:\Test\**\*.txt"
glob.glob(targetPattern)
De jokertekens **
tussen Test
en .text
betekent dat de txt
bestanden zowel in de map als in de submappen moeten worden gevonden.
pathlib
module zoekbestanden recursief
Net als bij het toevoegen **
in glob.glob
recursief bestanden zoeken, kan je ook toevoegen **
in pathlib.Path.glob
methode om de bestanden met een bepaalde extensie recursief vinden.
>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"**\*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt'), WindowsPath('C:/Test/sub/test1.txt')]
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedInGerelateerde Artikelen - Python File
- Alle bestanden van een map ophalen
- Een bestand en map verwijderen
- Hoe tekst aan een bestand in Python toe te voegen
- Hoe te controleren of een bestand bestaat in Python