Introduzione

Quando si ha a che fare con i file nelle directory in Python, è sempre una buona idea usare percorsi assoluti. Tuttavia, se si lavora con percorsi relativi, è necessario comprendere il concetto di directory di lavoro corrente (current working directory) e come trovare o modificare la directory di lavoro corrente. Un percorso assoluto specifica un percorso di file o directory a partire dalla directory principale, mentre il percorso relativo inizia dalla directory di lavoro corrente.

Quando si esegue uno script Python, la directory di lavoro corrente viene impostata sulla directory da cui viene eseguito lo script.

Il modulo os python fornisce un modo portatile per interagire con il sistema operativo. Il modulo fa parte della libreria Python standard e include metodi per trovare e modificare la directory di lavoro corrente.

Ottenere la directory di lavoro corrente in Python

Il metodo getcwd() del modulo os in Python, restituisce una stringa che contiene il percorso assoluto della directory di lavoro corrente. La stringa restituita non include il carattere barra finale.

os.getcwd()

Per utilizzare i metodi del modulo del sistema operativo, è necessario importare il modulo all'inizio del file.

Di seguito è riportato un esempio che mostra come stampare la directory di lavoro corrente:

# Import the os module
import os

# Get the current working directory
cwd = os.getcwd()

# Print the current working directory
print("Current working directory: {0}".format(cwd))

# Print the type of the returned object
print("os.getcwd() returns an object of type: {0}".format(type(cwd)))

L'output sarà simile a questo:

Current working directory: /home/noviello
os.getcwd() returns an object of type: <class 'str'>

Se vuoi trovare la directory in cui si trova lo script, usa os.path.realpath(__file__). Restituirà una stringa contenente il percorso assoluto dello script in esecuzione.

Modificare la directory di lavoro corrente in Python

Per cambiare la directory di lavoro corrente in Python, usa il metodo chdir().

os.getcwd(path)

Il metodo accetta un argomento, il percorso della directory in cui si desidera modificare. L'argomento path può essere assoluto o relativo.

Ecco un esempio:

# Import the os module
import os

# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))

# Change the current working directory
os.chdir('/tmp')

# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))

L'output sarà simile a questo:

Current working directory: /home/noviello
Current working directory: /tmp

L'argomento fornito dal metodo chdir() deve essere una directory, altrimenti viene sollevata un'eccezione NotADirectoryError. Se la directory specificata non esiste, viene sollevata un'eccezione FileNotFoundError. Se l'utente con cui è in esecuzione lo script non dispone delle autorizzazioni necessarie, viene sollevata un'eccezione PermissionError.

# Import the os module
import os

path = '/var/www'

try:
    os.chdir(path)
    print("Current working directory: {0}".format(os.getcwd()))
except FileNotFoundError:
    print("Directory: {0} does not exist".format(path))
except NotADirectoryError:
    print("{0} is not a directory".format(path))
except PermissionError:
    print("You do not have permissions to change to {0}".format(path))

Conclusione

Per trovare la directory di lavoro corrente in Python, usa os.getcwd() e per cambiare la directory di lavoro corrente, usa os.chdir(path).