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.

Artigo relacionado - Python Directory

  • Como apagar arquivos e diretórios usando Python