Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

320
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda