Come trovare file con una certa estensione solo in Python

Jinku Hu 30 gennaio 2023
  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
Come trovare file con una certa estensione solo in Python

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')]
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Articolo correlato - Python File