HOWTO · Python
Definir o caminho do arquivo em Python
Este tutorial demonstra como definir o caminho do arquivo em python.
Nesta página
Um caminho é uma string ou um objeto de caminho que identifica a localização de um arquivo ou diretório. Para especificar um caminho do Windows em Python, escape as barras invertidas ou use uma string bruta; para combinar componentes, prefira pathlib.Path ou use os.path.join(). Construir um caminho não abre um arquivo, não verifica se ele existe, não o executa nem altera o caminho de busca de importações do Python.
Escapar barras invertidas em strings de caminhos do Windows
Em uma string comum do Python, uma barra invertida inicia uma sequência de escape. Duplique cada barra invertida em um caminho do Windows, como em "C:\\Users\\Ada\\report.csv". Isso impede que sequências como \n sejam interpretadas como caracteres de nova linha. A forma duplicada é a notação usada no código-fonte Python; a string resultante contém uma única barra invertida em cada separador.
Usar strings brutas para caminhos do Windows
Prefixe um literal de string com r para que o Python mantenha as barras invertidas como foram escritas: r"C:\Users\Ada\report.csv". Uma string bruta ainda segue a sintaxe de literais de string do Python e não pode terminar com um número ímpar de barras invertidas, pois a última barra escaparia a aspa de fechamento. Se o caminho de um diretório precisar de um separador no final, junte outro componente ou use uma string comum com as barras invertidas escapadas.
Construir caminhos com os.path.join()
os.path é um módulo, e os.path.join() é a função desse módulo que combina componentes de caminho. Consulte a API de os.path. A página da API disponível nesse link está em inglês, pois não há um destino localizado em português. Passe o diretório e o nome do arquivo como componentes separados, por exemplo, os.path.join("reports", "annual", "summary.csv"). A função usa as convenções de caminho do sistema operacional em execução; ela não localiza um arquivo nem seleciona um diretório de projeto. Um componente absoluto posterior também pode alterar o resultado, portanto passe os componentes desejados com atenção.
Construir caminhos com pathlib.Path
Para a construção comum de caminhos, pathlib.Path oferece uma interface orientada a objetos. Crie um caminho a partir de uma string e combine outros componentes usando /. Este exemplo usa um caminho relativo e imprime o valor construído; não acessa o arquivo. A saída abaixo é o resultado em tempo de execução no POSIX: no Windows, o mesmo caminho é exibido com barras invertidas.
from pathlib import Path
report_path = Path("reports") / "annual" / "summary.csv"
print(report_path)
reports/annual/summary.csv
A forma como o caminho é exibido depende do sistema operacional. Path representa caminhos segundo as convenções da plataforma atual; use PureWindowsPath quando precisar manipular caminhos no formato do Windows em outro sistema operacional sem acessar o sistema de arquivos.
Construir caminhos absolutos
Um caminho absoluto identifica uma localização a partir da raiz do sistema de arquivos. No Windows, um exemplo com unidade é Path(r"C:\Users\Ada") / "reports" / "summary.csv"; essa mesma forma não representa um caminho absoluto em todos os sistemas operacionais. Para um caminho da plataforma atual, comece por uma base absoluta conhecida, como Path.home() ou Path.cwd(), e depois combine os componentes restantes. Com os.path, os.path.join(base, "reports", "summary.csv") combina componentes, enquanto os.path.abspath(relative_path) resolve um caminho relativo em relação ao diretório de trabalho atual do processo. Nenhuma dessas operações verifica se o destino existe.
Trabalhar com caminhos relativos
Um caminho relativo indica uma localização a partir de um diretório-base, e não da raiz do sistema de arquivos. Por exemplo, Path("data") / "input.csv" continua sendo relativo. Quando um programa usa esse caminho para acessar o sistema de arquivos, o sistema operacional o interpreta em relação ao diretório de trabalho atual do processo, a menos que o programa forneça explicitamente outra base. Esse diretório pode ser diferente daquele que contém o script Python, então escolha uma base compatível com a forma como o programa é iniciado.
Para caminhos relativos a um diretório conhecido, defina essa base explicitamente e acrescente os componentes: project_dir / "data" / "input.csv". A forma equivalente, os.path.join(project_dir, "data", "input.csv"), funciona com caminhos em string. Essas operações apenas constroem valores de caminho; use APIs de arquivo separadamente para ler, gravar ou verificar arquivos.