Come trovare file con una certa estensione solo in Python
-
Metodo
glob.globper trovare file con una certa estensione -
os.listdir()metodo per trovare i file con una certa estensione -
Metodo
pathlib.globper trovare i file con una certa estensione - Trovare i file con una certa estensione nella directory e le sue sottodirectory in Python
-
Il modulo
pathlibcerca i file in modo ricorsivo
Questo articolo introduce diversi metodi per trovare i file con una certa estensione solo in Python.
Metodo glob.glob per trovare file con una certa estensione
Potremmo usare il modulo glob.glob per trovare i file con una certa estensione solo in Python.
import glob
targetPattern = r"C:\Test\*.txt"
glob.glob(targetPattern)
I codici di cui sopra mostrano come trovare i file con estensione txt nella directory C:\Test.
os.listdir() metodo per trovare i file con una certa estensione
La funzione os.listdir() elenca tutti i file nella directory data, senza le informazioni sul percorso del file. Si possono estrarre i file con l’estensione specifica usando la funzione str.endswith().
>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [_ for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['test.txt', 'test1.txt']
È necessario costruire il percorso completo con la funzione os.path.join().
>>> 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']
Metodo pathlib.glob per trovare i file con una certa estensione
modulo pathlib è introdotto in Python 3.4 che offre percorsi di filesystem orientati agli oggetti. Esso fornisce due stili: Percorsi Windows nel sistema operativo Windows OS e percorsi POSIX nei sistemi Unix-alike.
>>> 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')]
Il risultato è rappresentato con WindowsPath, ed è possibile convertire il risultato nella rappresentazione delle stringhe aggiungendo str(), come
>>> [str(_) for _ in pathlib.Path(fileDir).glob(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test.txt']
Trovare i file con una certa estensione nella directory e le sue sottodirectory in Python
Il pattern C:\Test\*.txt cerca solo i file txt nella directory C:\Test, ma non nelle sue sottodirectory. Se si vogliono ottenere anche i file txt nelle sottodirectory, si può modificare un po’ il pattern.
import glob
targetPattern = r"C:\Test\**\*.txt"
glob.glob(targetPattern)
Il jolly ** tra Test e \*.txt significa che dovrebbe trovare i file txt sia nella directory che nelle sue sottodirectory.
Il modulo pathlib cerca i file in modo ricorsivo
Simile all’aggiunta di ** in glob.glob per cercare i file in modo ricorsivo, si può anche aggiungere ** nel metodo pathlib.Path.glob per trovare i file con una certa estensione in modo ricorsivo.
>>> 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.
LinkedIn Facebook