Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

319
Vistas
¿Cómo obtener la ruta absoluta de un objeto pathlib.Path?

Hacer un objeto de ruta con el módulo pathlib como:

 p = pathlib.Path('file.txt')

El objeto p apuntará a algún archivo en el sistema de archivos, ya que puedo hacer, por ejemplo p.read_text() .

¿Cómo puedo obtener la ruta absoluta del objeto p en una cadena?

Parece que puedo usar, por ejemplo os.path.abspath(p) para obtener la ruta absoluta, pero es incómodo usar un método os.path , ya que asumo que pathlib debería ser un reemplazo para os.path .

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Usar resolve()

Simplemente use Path.resolve() así:

 p = p.resolve()

Esto hace que su ruta sea absoluta y reemplaza todas las partes relativas con partes absolutas y todos los enlaces simbólicos con rutas físicas. En los sistemas de archivos que no distinguen entre mayúsculas y minúsculas, también canonicalizará el caso ( file.TXT se convierte en file.txt ).

Evite absolute() antes de Python 3.11

El método alternativo absolute() no se documentó ni probó antes de Python 3.11 (consulte la discusión en el informe de error creado por @Jim Fasarakis Hilliard).

Las correcciones se fusionaron en enero de 2022 .

La diferencia

La diferencia entre resolve y absolute es que absolute() no reemplaza las partes vinculadas simbólicamente (enlace simbólico) de la ruta, y nunca genera FileNotFoundError . Tampoco modifica el caso.

Si desea evitar resolve() (por ejemplo, desea conservar enlaces simbólicos, mayúsculas o partes relativas), use esto en Python <3.11:

 p = Path.cwd() / "file.txt"

Esto funciona incluso si la ruta que está proporcionando es absoluta; en ese caso, se ignora el cwd (directorio de trabajo actual).

Cuidado con los archivos que no existen en Windows

Si el archivo no existe, en Python 3.6 a 3.9 en Windows, resolve() no antepone el directorio de trabajo actual. Consulte el problema 38671 , corregido en Python 3.10.

Cuidado con el error de archivo no encontrado

En las versiones de Python anteriores a la v3.6, resolve() FileNotFoundError si la ruta no está presente en el disco.

Entonces, si existe algún riesgo, verifique de antemano con p.exists() o intente/capte el error.

 # check beforehand if p.exists(): p = p.resolve() # or except afterward try: p = p.resolve() except FileNotFoundError: # deal with the missing file here pass

Si está tratando con una ruta que no está en el disco, para empezar, y no está en Python 3.6+, es mejor volver a os.path.abspath(str(p)) .

Desde 3.6 en adelante, resolve() solo genera FileNotFoundError si usa el argumento strict .

 # might raise FileNotFoundError p = p.resolve(strict=True)

Pero tenga cuidado, el uso strict hace que su código sea incompatible con las versiones de Python anteriores a la 3.6, ya que no aceptan el argumento strict .

over 4 years ago · Santiago Trujillo Denunciar

0

Está buscando el método .absolute , si mi comprensión es correcta, cuya documentación establece:

 >>> print(p.absolute.__doc__) Return an absolute version of this path. This function works even if the path doesn't point to anything. No normalization is done, ie all '.' and '..' will be kept along. Use resolve() to get the canonical path to a file.

Con un archivo de prueba en mi sistema, esto devuelve:

 >>> p = pathlib.Path('testfile') >>> p.absolute() PosixPath('/home/jim/testfile')

Este método parece ser una adición nueva, y aún no documentada, a los objetos de herencia Path y Path .

Creó un problema para documentar esto .

over 4 years ago · Santiago Trujillo Denunciar

0

Si simplemente desea la ruta y no desea verificar si el archivo existe, puede hacerlo

 str(p)

como documento en la sección Operaciones .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda