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!
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
(mientrasprint(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
Deberías usar el
os.path
módulo (docs.python.org/library/os.path.html) en lugar de manipular cadenas directamente. Usaros.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