__file__
e
os.path.abspath(__file__)
não são a mesma coisa? Não entendi o porqu}e do professor usar a versão de baixo.
__file__
e
os.path.abspath(__file__)
não são a mesma coisa? Não entendi o porqu}e do professor usar a versão de baixo.
Olá Janderson, tudo bem com você?
Peço desculpas pela demora no retorno.
A função abspath()
possui o objetivo de transformar um caminho relativo em um caminho absoluto. Um caminho absoluto, pode ser entendido como um caminho construído a partir da raiz do sistema percorrendo todo o caminho até o arquivo, já o caminho relativo é construído a partir da sua localização atual, não mostrando dessa forma o endereço completo do arquivo.
Por exemplo:
caminho_absoluto = "C:\Users\Alura\Forum\index.html"
caminho_relativo = "Forum\index.html"
Essa necessidade de conversão do tipo através do abspath()
necessária devido à diferença de comportamento do método __file__
em diferentes versões do python.
A partir da versão Python 3.9 o método mágico __file__
sempre retorna o caminho absoluto para o módulo onde foi executado. Já nas versões iguais ou anteriores a Python 3.8 o retorno do método mágico __file__
irá depender do local onde foi executado, podendo ser um caminho relativo ou um caminho absoluto.
Caso esteja fazendo uso de uma versão superior ou igual à versão Python 3.9, você poderá declarar o caminho sem o uso da função abspath()
, como apresentado abaixo.
UPLOAD_PATH = os.path.dirname(__file__) + '/uploads'
No entanto, por uma questão de didática e visando que o código seja executado da melhor forma possível, seja nas versões iguais a Python 3.9 ou iguais a Python 3.8, foi adotado nas aulas o padrão de conversão do caminho para um caminho absoluto com o uso da função 'abspath()'.
Fico à disposição em caso de dúvidas.
Abraços e bons estudos.