3. Le Cartelle in Python

In questa lezione vedremo come creare, rinominare, spostare le cartelle e conoscerne il contenuto nei nostri programmi Python utilizzando i moduli della standard library os e shutil.

import os, shutil


Come creare, rinominare e conoscere il contenuto delle cartelle con il modulo os

Anzitutto è bene sapere in che cartella ci troviamo, per fare questo utilizziamo il metodo getcwd() di os:

os.getcwd() # getcwd sta per Get Current Working Directory

Questo metodo restituisce la cartella di lavoro in cui ci si trova attualmente: se provate questo comando su Windows, otterrete la cartella di lavoro di default di Python.

Una volta che sappiamo in che cartella ci troviamo, è utile conoscerne il contenuto, che possiamo ottenere grazie a un altro metodo di os: listdir(). Questa funzione ci mostra un elenco degli elementi e delle sottocartelle presenti nella cartella in cui stiamo operando. Possiamo spostarci da una cartella all'altra utilizzando:

os.chdir("C:\\") # chdir sta per CHange DIRectory

Possiamo creare una o più cartelle con os.makedirs():

os.makedirs("C:\\nuova__cartella")

os.makedirs("C:\\lezione21\\informatica")
os.makedirs("C:\\lezione21\\sistemi")
os.makedirs("C:\\lezione21\\security")

Anche rinominare è facilissimo grazie a os.rename():

os.rename("nuova__cartella","lezione21")


Come spostare, copiare ed eliminare cartelle con il modulo shutil

Per spostare una cartella con relativi file, utilizziamo la funzione move() di shutil:

shutils.move("C:\\lezione21\\security", "C:\\lezione21\\informatica\\")

"C:\\lezione21\\informatica\\security"

Mentre volendo invece copiare una cartella con relative sottocartelle facciamo:

shutil.copytree("C:\\lezione20","C:\\lezione21\\lezione20copia")

Alla funzione passiamo stavolta il nome di una nuova cartella in cui vogliamo effettuare la copia, e copytree() creerà eventuali cartelle intermedie.

Infine la funzione più potente di tutte!

Volendo eliminare un intero albero di cartelle e relativi file usiamo rmtree():

shutil.rmtree("lezione21\\lezione20copia")