Respuestas:
os.path.isabs
devuelve True
si la ruta es absoluta, False
si no. La documentación dice que funciona en Windows (puedo confirmar que funciona en Linux personalmente).
os.path.isabs(my_path)
Y si lo que realmente quieres es el camino absoluto, no te molestes en comprobar si es así, solo obtén el abspath
:
import os
print os.path.abspath('.')
Uso os.path.isabs
.
import os.path
os.path.isabs('/home/user')
True
os.path.isabs('user')
False
En realidad, creo que ninguna de las respuestas anteriores abordó el problema real: las rutas multiplataforma. Lo que hace os.path es cargar la versión dependiente del sistema operativo de la biblioteca 'ruta'. así que la solución es cargar explícitamente la biblioteca de ruta relevante (OS):
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] == ':')
De python 3.4
pathlib está disponible.
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()
da correctamente False
, mientras que os.path.isabs('\tmp')
da incorrectamente True
. (Algunos dirían que \tmp
es una ruta absoluta en Windows, pero eso solo es cierto para una definición muy inútil de una ruta absoluta ).
os.path.isabs('c:\\')
regresa False.