Debería utilizar el os.pathmódulo ( docs.python.org/library/os.path.html ) en lugar de manipular cadenas directamente. Úselo os.path.joinpara concatenar componentes de ruta.
kennytm
2
gracias Tim por recordar, después de leer el documento, creo que la respuesta a mi pregunta real es os.path.join (carpeta, nombre de archivo) y no tengo que preocuparme por la barra en absoluto. hombre, me va a encantar Python ;-)
ohho
2
Es por eso que le pregunté: no haga esto usted mismo, use os.path.joiny deje que la biblioteca estándar descubra el separador de ruta correcto.
Tim Pietzcker
2
@ S.Lott No consideraré esto 'malo'. la pregunta es una pregunta válida en sí misma. es solo una parte de una pregunta más grande (se puede decir real).
ohho
6
Sin embargo, dependiendo de lo que esté haciendo, la pregunta puede ser interesante. 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 final de barra. Eso puede estar fuera de su control; y es un caso de uso perfectamente válido para la respuesta de Marco a continuación.
Chris Krycho
Respuestas:
180
os.path.join(path, '') agregará la barra inclinada final si aún no está allí.
Puede hacer os.path.join(path, '', '')o os.path.join(path_with_a_trailing_slash, '')y seguirá obteniendo solo una barra al final.
os.path.normcase(path)Normalize the case of a pathname.OnUnixandMac OS X, this returns the path unchanged; on case-insensitive filesystems, it converts the path to lowercase.OnWindows, it also converts forward slashes to backward slashes.
De lo contrario, puede buscar algo más en esta página.
os.path
módulo ( docs.python.org/library/os.path.html ) en lugar de manipular cadenas directamente. Úseloos.path.join
para concatenar componentes de ruta.os.path.join
y deje que la biblioteca estándar descubra el separador de ruta correcto.Respuestas:
os.path.join(path, '')
agregará la barra inclinada final si aún no está allí.Puede hacer
os.path.join(path, '', '')
oos.path.join(path_with_a_trailing_slash, '')
y seguirá obteniendo solo una barra al final.fuente
path
resulta ser un archivo en lugar de un directorio. Eso es un poco inconveniente.Dado que desea conectar un directorio y un nombre de archivo, use
Si desea deshacerse de las
.\..\..\blah\
rutas, usefuente
Puede hacerlo manualmente de la siguiente manera:
Sin embargo, suele ser mucho más limpio de usar
os.path.join
.fuente
Podrías usar algo como esto:
De lo contrario, puede buscar algo más en esta página.
fuente