Come trovare file con una certa estensione solo in Python

Jinku Hu 30 gennaio 2023 Python Python File
  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')]
Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
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