Python, agregue una barra inclinada final a la cadena de directorio, de forma independiente

2 minutos de lectura

avatar de usuario
Oh ho

¿Cómo puedo agregar una barra diagonal (/ para *nix, \ para win32) a una cadena de directorio, si la barra diagonal final no está ya allí? ¡Gracias!

  • Deberías usar el os.path módulo (docs.python.org/library/os.path.html) en lugar de manipular cadenas directamente. Usar os.path.join para concatenar componentes de ruta.

    – kennytm

    29 de abril de 2010 a las 9:33


  • gracias Tim por recordar, después de leer el documento, creo que la respuesta a mi real la pregunta es os.path.join(carpeta, nombre de archivo) y no tengo que preocuparme por la barra en absoluto. hombre, me va a encantar python 😉

    – Oh ho

    29 de abril de 2010 a las 9:51

  • Es por eso que pregunté: no hagas esto tú mismo, usa os.path.join y deje que la biblioteca estándar descubra el separador de ruta correcto.

    –Tim Pietzcker

    29 de abril de 2010 a las 9:52

  • @ S. Lott No consideraré esto ‘malo’. la pregunta es una pregunta válida por sí misma. es solo una parte de una pregunta más grande (se puede decir real).

    – Oh ho

    29 de abril de 2010 a las 10:06

  • Sin embargo, dependiendo de lo que esté haciendo, la pregunta puede seguir siendo de su interés. Por ejemplo, si está utilizando Python para proporcionar entrada a otro programa, es posible que tenga un caso en el que un argumento necesite una ruta con una barra inclinada. Eso puede estar fuera de tu control; y es un caso de uso perfectamente válido para la respuesta de Marco a continuación.

    – Chris Kricho

    10 de diciembre de 2012 a las 19:57

os.path.join(path, '') agregará la barra inclinada final si aún no está allí.

Tu puedes hacer os.path.join(path, '', '') o os.path.join(path_with_a_trailing_slash, '') y aún así solo obtendrá una barra inclinada final.

  • También agrega una barra cuando path pasa a ser un archivo en lugar de un directorio. Eso es un poco inconveniente.

    – Martín

    18 de agosto de 2019 a las 20:28

  • Parece que hay una excepción: print(os.path.join(r'\\server\c','')) da \\server\c (mientras print(os.path.join(r'\\server\c\x','')) da \\server\c\x\ )

    – omasoud

    14 dic 2020 a las 7:00


Como desea conectar un directorio y un nombre de archivo, use

os.path.join(directory, filename)

Si quieres deshacerte de .\..\..\blah\ caminos, uso

os.path.join(os.path.normpath(directory), filename)

Puedes hacerlo manualmente por:

path = ...

import os
if not path.endswith(os.path.sep):
    path += os.path.sep

Sin embargo, por lo general es mucho más limpio de usar os.path.join.

Podrías usar algo como esto:

os.path.normcase(path)
    Normalize the case of a pathname. On Unix and Mac OS X, this returns the path unchanged; on case-insensitive filesystems, it converts the path to lowercase. On Windows, it also converts forward slashes to backward slashes.

De lo contrario, podrías buscar algo más en este página

¿Ha sido útil esta solución?