Cambia la directory di lavoro in Python

Rayven Esplanada 18 luglio 2021
Cambia la directory di lavoro in Python

Questo articolo discute come puoi cambiare la directory di lavoro corrente da Python in un’altra posizione.

Usa il modulo os per cambiare directory in Python

Supponiamo, per qualche motivo, di voler modificare la directory di lavoro tramite Python anziché la console dei comandi. In tal caso, il modulo os fornisce strumenti per varie utilità del sistema operativo direttamente tramite Python.

import os

Diciamo che sei attualmente in una directory di lavoro in /Users/user e vuoi cambiare in Users/user2: prima verifica la directory di lavoro corrente in cui ti trovi stampando il risultato di os.getcwd(). Poi si chiama il blocco os.chdir("Users/user2") per cambiare la directory di lavoro corrente.

print(os.getcwd())
os.chdir("/Users/user2")
print(os.getcwd())

Produzione:

/Users/user
/Users/user2

Verifica che il tuo programma abbia cambiato con successo le directory di lavoro da user a user2.

Controllo delle eccezioni

Il percorso viene immesso dall’utente, quindi è molto probabile che si verifichino errori di input. Ad esempio, l’utente immette un percorso inesistente; questa funzione sarà probabilmente molto soggetta a eccezioni FileNotFound. Detto questo, dovremmo implementare il controllo delle eccezioni.

Usa if-else per verificare la presenza di errori

Il modo più semplice per farlo è controllare se il percorso specificato esiste usando if-else:

import os


def changeDir(newPath):
    if os.path.exists(newPath):
        os.chdir("Directory moved: ", newPath)
        print(os.getcwd())
    else:
        print("Directory ", newPath, " not found.")


print("Base directory: ", os.getcwd())
changeDir("/Users/user2")
changeDir("/Users/nonexistentpath")

Supponiamo che /Users/user2 sia un percorso di file esistente e che /Users/nonexistentpath non esista.

Produzione:

Base directory:  /Users/user
Directory moved:  /Users/user2
Directory  Users/nonexistentpath  not found.

La prima chiamata al blocco changeDir() è passata attraverso l’istruzione if perché il percorso esiste. D’altra parte, il secondo passa attraverso l’else e stampa un messaggio di errore perché il percorso non esiste.

Usa try...except per verificare la presenza di errori

Se il comando os.chdir() non trova il percorso del file, lancerà una notifica FileNotFoundError. Per capirlo, dobbiamo avvolgere il codice attorno a un blocco try...except.

import os


def changeDir(newPath):
    try:
        os.chdir(newPath)
        print("Directory moved:  newPath")
    except OSError:
        print("Directory ", newPath, "does not exist.")


print("Base directory: ", os.getcwd())
changeDir("/Users/user2")
changeDir("/Users/nonexistentpath")

Produzione:

Base directory:  /Users/user
Directory moved:  /Users/user2
Directory  Users/nonexistentpath  does not exist.

Più o meno, entrambi producono lo stesso output; tuttavia, usare la gestione delle eccezioni try...except è molto più sicuro che usare un’istruzione if-else. È perché le condizioni definite dall’utente potrebbero non coprire tutte le possibili eccezioni che potrebbero verificarsi nell’affrontare la manipolazione del percorso dei file.

In sintesi, il modulo os fornisce un ampio supporto per la manipolazione di file e directory, tra le altre utilità che offre.

Possiamo cambiare direttamente la directory di lavoro usando il blocco os.chdir(), ma sarebbe più sicuro avvolgerlo attorno ai blocchi if-else o try...except per evitare che si verifichino eccezioni.

Se vuoi esplorare di più sulla manipolazione dei file, la gestione delle eccezioni e l’aggiornamento dei nomi dei file o del contenuto sono incredibilmente importanti.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Articolo correlato - Python Directory