2010-04-29 12 views
59

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

+0

¿Qué quieres hacer con él? –

+5

Debe usar el módulo 'os.path' (http://docs.python.org/library/os.path.html) en lugar de manipular cadenas directamente. Use 'os.path.join' para concatenar componentes de ruta. – kennytm

+0

@Tim Pietzcker, entonces puedo estar seguro de que hay una barra cuando conecto la cadena de carpetas con un nombre de archivo – ohho

Respuesta

91

os.path.join(path, '') agregará la barra final si no está ya allí.

Puede hacer os.path.join(path, '', '') o os.path.join(path_with_a_trailing_slash, '') y solo obtendrá una barra inclinada.

7

Puede 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 para usar os.path.join.

+0

+1 para 'os.path.join' –

43
os.path.normpath(mypath) + os.sep 
+0

¡Gracias! claro y conciso – dopplesoldner

+9

esto falla si la ruta original es la raíz, '\' – mingxiao

-1

usted podría utilizar 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. 

otra cosa que podría buscar otra cosa en this página

22

Desde desea conectar un directorio y un nombre de archivo, utilice

os.path.join(directory, filename) 

Si desea deshacerse de .\..\..\blah\ caminos, utilizar

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