back to top

Operare con le directory in Python

Come qualsiasi altro linguaggio di programmazione, Python individua le directory in quanto insiemi di file e sotto-cartelle, directory vuote verranno quindi interpretate come spazi di memoria destinati ad ospitare eventuali contenuti.

La gestione delle directory è resa possibile dalla disponibilità di un modulo apposito, os, che può essere utilizzato tramite importazione.

Rilevazione della directory corrente

Il metodo getcwd() consente di rilevare la directory corrente, cioè quella all’interno della quale si sta operando. Una volta importato il modulo os la chiamata al metodo è effettuabile senza il passaggio di alcun parametro, come accade con l’esempio seguente:

# Individuazione della directory corrente con getcwd()
>>> import os
>>> os.getcwd()
'C:\\Python'

In alternativa si può ricorrere al metodo getcwdb() che restituisce la directory corrente sotto forma di oggetto di byte:

# Individuazione della directory corrente con getcwdb()
>>> import os
>>> os.getcwdb()
b'C:\\Python'

Come è possibile notare, in entrambi i casi gli output contengono dei backslash addizionali, per depurarli dai caratteri aggiuntivi è però supportato il passaggio del metodo (o meglio, della sua chiamata) alla funzione print():

# Individuazione della directory corrente con getcwd()
# ed eliminazione dei backslash addizionali
>>> import os
>>> print(os.getcwd())
C:\Python

Modificare la directory corrente

Il metodo chdir() consente di spostarsi dalla directory corrente ad un’altra directory. La chiamata al metodo prevede il passaggio a quest’ultimo del percorso (path) alla directory desiderata.

Tale parametro viene espresso sotto forma di stringa e può contenere sia slash che backslash per separare gli elementi che compongono il percorso, nel caso in cui si scelga di utilizzare il backslash sarà opportuno effettuarne l’escaping per maggiore sicurezza:

# Modifica della directory corrente e ritorno alla directory precedente
>>> import os
>>> os.chdir('C:\\')
>>> print(os.getcwd())
C:\
>>> os.chdir('C:\\Python')
>>> print(os.getcwd())
C:\Python

Visualizzare il contenuto di una directory

Per ottenere una stampa a video del contenuto di una directory è disponibile il metodo listdir() che, nel caso in cui si vogliano elencare gli elementi della directory corrente, non richiede il passaggio di alcun parametro.

# Visualizzare il contenuto della directory corrente
>>> import os
>>> print(os.getcwd())
C:\Python
>>> os.listdir()
['app.py', 'ciao.py', 'DLLs', 'Doc', 'include', 'Lib', 'libs', 
'LICENSE.txt', 'NEWS.txt', 'nuovo_file.txt', 
'PrimoProgrammaPython.py', 'Progetti', 'prova.txt', 'python.exe', 
'pythonw.exe', 'README.txt', 'Scripts', 'tcl', 'Test', 'test.py', 
'text.txt', 'Tools', 'x.py', '__pycache__']

Se invece l’obbiettivo è quello di visualizzare il contenuto di una directory specifica, allora il percorso di quest’ultima dovrà essere impiegato come parametro per la chiamata del metodo:

# Visualizzare il contenuto di una directory specifica
>>> import os
>>> os.listdir('C:\\Python\\Tools')
['i18n', 'pynche', 'Scripts']

Creare e rinominare una directory

Il modulo os dispone anche di un metodo per la creazione delle directory: mkdir(). Se si desidera generare la nuova directory in un percorso specifico, quest’ultimo dovrà essere passato come parametro al metodo, altrimenti essa verrà creata all’interno della directory corrente:

# Creazione di una directory all'interno di una directory specifica
>>> import os
>>> os.mkdir('C:\\Python\\Progetti\\new_dir')
>>> os.listdir('C:\\Python\\Progetti')
['Guide', 'new_dir', 'prima_app.py', '__init__.py', '__pycache__']

Nel caso in cui si voglia rinominare la directory appena creata, o qualsiasi altra directory, si potrà utilizzare il metodo rename() a cui passare come primo parametro il nome della directory da rinominare e, come secondo, il nuovo nome da associare ad essa. Nel caso in cui la directory da rinominare non si trovi nella posizione di lavoro corrente se ne dovrà specificare il percorso all’interno del file system, come nel seguente esempio:

# Rinominare una directory
>>> import os
>>> os.rename('C:\\Python\\Progetti\\new_dir', 'C:\\Python\\Progetti\\new_dir_1')
>>> os.listdir('C:\\Python\\Progetti')
['Guide', 'new_dir_1', 'prima_app.py', '__init__.py', '__pycache__']

Eliminare una directory

Il metodo rmdir() del modulo os consente unicamente di eliminare una directory vuota, cioè priva di file e sotto-cartelle al suo interno:

# Eliminare una directory vuota
>>> import os
>>> os.rmdir('C:\\Python\\Progetti\\new_dir_1')
>>> os.listdir('C:\\Python\\Progetti')
['Guide', 'prima_app.py', '__init__.py', '__pycache__']

Se si desidera invece rimuovere una directory e tutto il suo contenuto si dovrà ricorrere al metodo rmtree() che fa capo ad un modulo differente: shutil. Per poter effettuare tale operazione si dovrà quindi importare innanzitutto quest’ultimo.

# Eliminare un directory popolata
>>> import shutil
>>> shutil.rmtree('C:\\Python\\Progetti')
Pubblicità
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.