Come trovare file con una certa estensione solo in Python

  1. Metodo glob.glob per trovare file con una certa estensione
  2. os.listdir() metodo per trovare i file con una certa estensione
  3. Metodo pathlib.glob per trovare i file con una certa estensione
  4. Trovare i file con una certa estensione nella directory e le sue sottodirectory in Python
  5. 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')]

Articolo correlato - Python File

  • Importa un file in Python
  • Salva un dizionario in un file in Python