Elimina file e directory utilizzando Python

Suraj Joshi 30 gennaio 2023
  1. Elimina file utilizzando il modulo os in Python
  2. Elimina file utilizzando il modulo pathlib in Python
  3. Elimina file con corrispondenza pattern in Python
  4. Elimina le directory usando il modulo os di Python
  5. Elimina le directory usando il modulo pathlib di Python
  6. Elimina le directory non vuote usando il metodo Python shutil.rmtree
Elimina file e directory utilizzando Python

Questo articolo introduce come eliminare file e directory con pacchetti integrati in Python come os, pathlib e shutil.

Elimina file utilizzando il modulo os in Python

os è un pacchetto integrato disponibile sia in Python 2 che in Python 3.

Possiamo usare remove() e unlink() dal modulo os per eliminare i file usando Python. Entrambe queste funzioni sono simili nell’azione. Entrambi prendono come argomento il percorso del file da eliminare.

import os

os.remove("test_dir/main.py")

Elimina il file denominato main.py che si trova all’interno di test_dir. Dato che qui stiamo usando il percorso relativo, test_dir deve essere nella stessa cartella principale di quella del nostro programma Python. Possiamo anche usare il percorso del file assoluto.

import os

os.unlink("test_dir/main.py")

Elimina anche il file denominato main.py che si trova all’interno di test_dir.

Entrambe le funzioni possono eliminare solo file. Se diamo il percorso della directory da eliminare, otteniamo l’errore IsADirectoryError.

Allo stesso modo, otteniamo FileNotFoundError se il file non è presente nel percorso specificato.

Se non abbiamo il permesso di eliminare il file, otteniamo l’errore PermissionError.

Per affrontare questi errori durante l’eliminazione del file, dovremmo utilizzare la gestione delle eccezioni.

import os

try:
    os.remove("test_dir/main.py")
except OSError as e:
    print(f"Error:{ e.strerror}")

Produzione:

Error:No such file or directory

Se non esiste un file di questo tipo, viene stampato un errore nell’output piuttosto che l’intero programma da arrestare in modo anomalo.

Elimina file utilizzando il modulo pathlib in Python

Per rimuovere file usando il modulo pathlib, creiamo prima un oggetto Path definito nel modulo pathlib. Quindi usiamo il metodo unlink() per eliminare il file.

from pathlib import Path

filePath = Path("test_dir/main.py")

try:
    filePath.unlink()
except OSError as e:
    print(f"Error:{ e.strerror}")

Qui, istanziamo l’oggetto filePath dalla classe Path con la posizione del file da eliminare.

Il modulo pathlib è disponibile solo in Python 3.4 e versioni successive. Per Python 2 dobbiamo installare il modulo usando pip.

Elimina file con corrispondenza pattern in Python

Possiamo usare il modulo glob per abbinare i pattern nei file e dopo aver raccolto tutti i file che corrispondono al pattern, possiamo eliminarli tutti usando uno dei metodi sopra specificati.

import os
import glob

py_files = glob.glob("test_dir/*.py")

for py_file in py_files:
    try:
        os.remove(py_file)
    except OSError as e:
        print(f"Error:{ e.strerror}")

Questo cancella tutti i file nella directory test_dir con estensione .py.

Elimina le directory usando il modulo os di Python

Per cancellare le directory usando Python, possiamo usare le directory os, pathlib e shutlib. os e pathlib possono eliminare solo directory vuote mentre shutlib può rimuovere anche directory non vuote.

import os

dirPath = "test_dir"

try:
    os.rmdir(dirPath)
except OSError as e:
    print(f"Error:{ e.strerror}")

Elimina la directory vuota test_dir nella nostra directory di lavoro corrente.

Elimina le directory usando il modulo pathlib di Python

Se la directory non è vuota, la directory non può essere rimossa usando questo metodo, otteniamo un output dal programma che dice Error: Directory not empty.

Possiamo anche usare il modulo pathlib per rimuovere directory non vuote.

from pathlib import Path

dirPath = Path("test_dir")

try:
    dirPath.rmdir()
except OSError as e:
    print(f"Error:{ e.strerror}")

Elimina anche la directory vuota test_dir nella nostra directory di lavoro corrente.

Elimina le directory non vuote usando il metodo Python shutil.rmtree

Per eliminare directory non vuote usando Python, usiamo il metodo rmtree dal modulo shutil.

import shutil

dirPath = "test_dir"

try:
    shutil.rmtree(dirPath)
except OSError as e:
    print(f"Error:{ e.strerror}")

Elimina la directory test_dir nella nostra directory di lavoro corrente e tutto il suo contenuto.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Articolo correlato - Python File

Articolo correlato - Python Directory