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/não existe caminho
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.