O caminho absoluto do UNIX começa com '/', enquanto o Windows começa com o alfabeto 'C:' ou '\'. O python tem uma função padrão para verificar se um caminho é absoluto ou relativo?
142
os.path.isabs
retorna True
se o caminho for absoluto, False
se não. A documentação diz que funciona no Windows (posso confirmar que funciona no Linux pessoalmente).
os.path.isabs(my_path)
os.path.isabs('c:\\')
retorna False.E se o que você realmente deseja é o caminho absoluto, não se preocupe em verificar se é, basta obter o
abspath
:fonte
Use
os.path.isabs
.fonte
fonte
Na verdade, acho que nenhuma das respostas acima abordou o problema real: caminhos de plataforma cruzada. O que o os.path faz é carregar a versão dependente do SO da biblioteca 'path'. portanto, a solução é carregar explicitamente a biblioteca de caminhos relevante (SO):
fonte
def path_is_abs(p): return (len(p) > 1) and (p[0] == '/' or p[1] == ':')
Do
python 3.4
pathlib está disponível.fonte
Path('\tmp').is_absolute()
dá corretamenteFalse
, enquantoos.path.isabs('\tmp')
dá incorretamenteTrue
. (Alguns argumentam que esse\tmp
é um caminho absoluto no Windows, mas isso é verdade apenas para uma definição muito inútil de um caminho absoluto .)de outra maneira, se você não está no diretório de trabalho atual, meio sujo, mas funciona para mim.
fonte