Come trovare file con una certa estensione solo in Python
-
Metodo
glob.glob
per trovare file con una certa estensione -
os.listdir()
metodo per trovare i file con una certa estensione -
Metodo
pathlib.glob
per trovare i file con una certa estensione - Trovare i file con una certa estensione nella directory e le sue sottodirectory in Python
-
Il modulo
pathlib
cerca 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