Alterar directório de trabalho em Python

Rayven Esplanada 18 julho 2021
Alterar directório de trabalho em Python

Este artigo discute como se pode mudar o directório de trabalho actual de Python para outro local.

Utilize o módulo os para mudar de directório em Python

Suponha, por alguma razão, que pretende alterar o seu directório de trabalho via Python em vez da consola de comando. Nesse caso, o módulo os fornece ferramentas para utilitários diversos do sistema operativo directamente através de Python.

import os

Digamos que está actualmente num directório de trabalho em /Users/user e quer mudar para Users/user2: primeiro, verifique o directório de trabalho actual, imprimindo o resultado de os.getcwd(). A seguir, chamar o bloco os.chdir("Users/user2") para mudar o directório de trabalho actual.

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

Resultado:

/Users/user
/Users/user2

Verifica que o seu programa mudou com sucesso os directórios de trabalho de user para user2.

Verificação de Exceções

O caminho é introduzido pelo utilizador, pelo que os erros de introdução são muito prováveis. Por exemplo, o utilizador insere um caminho inexistente; esta função será provavelmente muito propensa a excepções FileNotFound. Dado isto, devemos implementar a verificação de excepções.

Utilizar if-else para verificar a existência de erros

A forma simples de o fazer é verificar se o caminho especificado existe, utilizando 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")

Vamos supor que /Users/user2 é um caminho de ficheiro existente, e que /Users/nonexistentpath não existe.

Resultado:

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

A primeira chamada para o bloco changeDir() passou pela declaração if porque o caminho existe. Por outro lado, a segunda passa pela instrução else e imprime uma mensagem de erro, porque o caminho não existe.

Utilize try...except para verificar a existência de erros

Se o comando os.chdir() não encontrar o caminho do ficheiro, lançará uma notificação de FileNotFoundError. Para apanhar isto, precisamos de enrolar o código em torno de um bloco 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")

Resultado:

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

Mais ou menos, ambos produzem a mesma saída; contudo, utilizando o tratamento de excepções try...except é muito mais seguro do que utilizar uma declaração if-else. É porque as condições definidas pelo utilizador podem não cobrir todas as possíveis excepções que possam ocorrer no tratamento da manipulação do caminho do ficheiro.

Em resumo, o módulo os fornece um amplo apoio à manipulação de ficheiros e directórios, entre as outras utilidades que oferece.

Podemos alterar directamente o directório de trabalho utilizando o bloco os.chdir(), mas seria mais seguro envolvê-lo em blocos if-else ou try...except para evitar excepções.

Se quiser explorar mais sobre manipulação de ficheiros, o tratamento de excepções e a actualização de nomes de ficheiros ou conteúdos são incrivelmente importantes.

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

Artigo relacionado - Python Directory