2010-09-20 8 views
25

Estoy buscando algunos consejos sobre la mejor manera de generar una ruta de archivo utilizando variables, actualmente mi código es similar al siguiente:Crear ruta del archivo a partir de variables

path = /my/root/directory 
for x in list_of_vars: 
     if os.path.isdir(path + '/' + x): # line A 
      print(x + ' exists.') 
     else: 
      os.mkdir(path + '/' + x)  # line B 
      print(x + ' created.') 

Para las líneas A y B como se muestra arriba, ¿hay una mejor manera de crear una ruta de archivo ya que será más larga a medida que profundice en el árbol de directorios?

preveo un método integrado existente para ser utilizado de la siguiente manera:

create_path(path, 'in', 'here') 

produciendo un camino de forma /my/root/directory/in/here

Si no hay ninguna función integrada acabo escribirá mismo uno.

Gracias por cualquier aportación.

Respuesta

52

Sí, hay una función incorporada: os.path.join.

>>> import os.path 
>>> os.path.join('/my/root/directory', 'in', 'here') 
'/my/root/directory/in/here' 
9

Desea la función path.join() de os.path.

>>> from os import path 
>>> path.join('foo', 'bar') 
'foo/bar' 

Esto construye su camino con os.sep (en lugar de la menos portátiles '/') y lo hace de manera más eficiente (en general) que el uso de +.

Sin embargo, esto no creará realmente la ruta. Para eso, tienes que hacer algo como lo que haces en tu pregunta. Puede escribir algo como:

start_path = '/my/root/directory' 
final_path = os.join(start_path, *list_of_vars) 
if not os.path.isdir(final_path): 
    os.makedirs (final_path) 
Cuestiones relacionadas