La ruta absoluta de UNIX comienza con '/', mientras que Windows comienza con el alfabeto 'C:' o '\'. ¿Python tiene una función estándar para verificar si una ruta es absoluta o relativa?
142
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)
os.path.isabs('c:\\')
regresa False.Y si lo que realmente quieres es el camino absoluto, no te molestes en comprobar si es así, solo obtén el
abspath
:fuente
Uso
os.path.isabs
.fuente
fuente
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):
fuente
def path_is_abs(p): return (len(p) > 1) and (p[0] == '/' or p[1] == ':')
De
python 3.4
pathlib está disponible.fuente
Path('\tmp').is_absolute()
da correctamenteFalse
, mientras queos.path.isabs('\tmp')
da incorrectamenteTrue
. (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 ).De otra manera, si no está en el directorio de trabajo actual, está un poco sucio, pero me funciona.
fuente