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?¿Cómo comprobar si una ruta es una ruta absoluta o relativa en una plataforma cruzada con Python?
Respuesta
os.path.isabs
devuelve True
si la ruta es absoluta, False
si no es así. The documentation dice que funciona en Windows (puedo confirmar que funciona en Linux personalmente).
os.path.isabs(my_path)
Use os.path.isabs
.
El módulo os.path
tendrá todo lo que necesita.
import os.path
os.path.isabs('\home\user')
True
os.path.isabs('user')
False
No creo que la barra invertida funcione, al menos no funciona en mi Linux Box. – Constantinius
Y si lo que realmente quiere es la ruta absoluta, no se molestan en comprobar para ver si lo es, acaba de obtener el abspath
:
import os
print os.path.abspath('.')
puede que no haya respondido la pregunta original, pero exactamente lo que estaba buscando sin darme cuenta. ¡Gracias! – mephisto
En realidad creo que ninguna de las anteriores las respuestas abordaron el problema real: las rutas multiplataforma. Lo que os.path hace es cargar la versión dependiente del sistema operativo de la biblioteca 'path'. por lo que la solución es cargar explícitamente la vía de la biblioteca correspondiente (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
otra manera si no está en el directorio de trabajo actual, un poco sucia, pero funciona para mí.
import re
path = 'my/relative/path'
# path = '..my/relative/path'
# path = './my/relative/path'
pattern = r'([a-zA-Z0-9]|[.])+/'
is_ralative = bool(pattern)
- 1. Compruebe si una ruta es absoluta o relativa
- 2. utiliza una ruta absoluta o relativa?
- 3. Ruta absoluta y ruta relativa
- 4. Cómo comprobar si la ruta es relativa o absoluta en java
- 5. Detecta si la ruta es absoluta o relativa
- 6. ¿Cómo convertir una ruta relativa a una ruta absoluta en una aplicación de Windows?
- 7. ruta absoluta relativa perl
- 8. ¿Cómo concatenar una ruta absoluta y una ruta relativa con QDir?
- 9. ¿Cómo convierto una ruta relativa en Ant en una ruta absoluta?
- 10. ¿Cuál es la forma correcta de comprobar si una ruta es una ruta UNC o una ruta local?
- 11. Comprobar si una ruta es válida en Python
- 12. Win32 API para determinar si una ruta es relativa o absoluta?
- 13. Cómo obtener una ruta de archivo absoluta en Python
- 14. Cómo quitar la base de una ruta absoluta para obtener una ruta relativa?
- 15. Cómo convertir ruta relativa a la ruta absoluta en Unix
- 16. extender una CFC con una ruta relativa
- 17. Ruta relativa a la ruta absoluta en Elisp
- 18. Ruta relativa a la ruta absoluta en VB.NET
- 19. Cómo incluir una plantilla con una ruta relativa en Jinja2
- 20. ¿Cómo obtener la ruta absoluta para una ruta relativa dada programáticamente en Linux?
- 21. Ruta relativa a la ruta absoluta en C#?
- 22. php: comprobar si existe una ruta?
- 23. En un archivo MAKE, ¿cómo obtener la ruta relativa de una ruta absoluta a otra?
- 24. ¿Cómo uso una ruta relativa en XDocument.Load?
- 25. PhantomJS requieren() una ruta relativa
- 26. Uso de JasperReports con una ruta relativa
- 27. Resolución de una ruta de URL relativa a su ruta absoluta
- 28. Ruta de absoluta a relativa (Eclipse, JSP)
- 29. URL absoluta de la ruta relativa
- 30. ¿Cómo hacer una ruta absoluta relativa a una carpeta en particular?
Esta función no es multiplataforma. En Unix, 'os.path.isabs ('c: \\')' devuelve False. –
Rotfl, y debería devolver False, ya que C: \\ no es una ruta absoluta en el sistema Unix. Las rutas absolutas en las plataformas Unix comienzan con "/", como "/ var/custApp /", etc. :) –
@techtonik Para que quede perfectamente claro para cualquier otra persona que pueda encontrar esto: 'c: \\' es un archivo perfectamente válido/nombre de directorio en Unix. Entonces, realmente sería una ruta relativa en un sistema Unix. Por lo tanto, la función es multiplataforma. Porque, toma las especialidades de Windows y Unix en cuenta. – Lemming