(Python) Por que sempre preciso digitar caminhos absolutos nas funções de arquivo?

StackOverflow https://stackoverflow.com/questions/2615526

  •  26-09-2019
  •  | 
  •  

Pergunta

Por exemplo, se eu tiver:
C: 42 main.py
e
C: 42 info.txt
e eu quero ler info.txt de main.py, tenho que entrar "c: 42 info.txt" Instad de apenas "info.txt".

É para ser assim?
Caso contrário, como posso consertar isso?

Foi útil?

Solução

Você pode especificar caminhos em relação a onde está o seu script. Eu faço isso o tempo todo ao escrever unittests.

Cada arquivo python tem um atributo especial - __file__ - que armazena o caminho para esse arquivo.

py_file= os.path.abspath(__file__) # path to main.py
py_dir = os.path.dirname(py_file) # path to the parent dir of main.py
txt_file = os.path.join(py_dir, 'info.txt') # path to info.txt

Outras dicas

É para ser assim. Os caminhos relativos são relativos ao diretório de trabalho atual do processo, não ao diretório em que seu script reside.

Em vez de codificá -lo, você pode encontrar o caminho do script usando sys.path[0], e também chdir para ele ou usá -lo diretamente no nome do arquivo:

os.path.join(sys.path[0], 'info.txt')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top