Respostas:
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)
E se o que você realmente deseja é o caminho absoluto, não se preocupe em verificar se é, basta obter o abspath
:
import os
print os.path.abspath('.')
Use os.path.isabs
.
import os.path
os.path.isabs('/home/user')
True
os.path.isabs('user')
False
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):
import ntpath
import posixpath
ntpath.isabs("Z:/a/b/c../../H/I/J.txt")
True
posixpath.isabs("Z:/a/b/c../../H/I/J.txt")
False
def path_is_abs(p): return (len(p) > 1) and (p[0] == '/' or p[1] == ':')
Do python 3.4
pathlib está disponível.
In [1]: from pathlib import Path
In [2]: Path('..').is_absolute()
Out[2]: False
In [3]: Path('C:/').is_absolute()
Out[3]: True
In [4]: Path('..').resolve()
Out[4]: WindowsPath('C:/the/complete/path')
In [5]: Path('C:/').resolve()
Out[5]: WindowsPath('C:/')
Path('\tmp').is_absolute()
dá corretamente False
, enquanto os.path.isabs('\tmp')
dá incorretamente True
. (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 .)
os.path.isabs('c:\\')
retorna False.