2010-09-20 7 views
25

Je cherche des conseils quant à la meilleure façon de générer un chemin de fichier en utilisant les variables, actuellement mon code ressemble à ce qui suit:Créer le chemin du fichier à 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.') 

Pour les lignes A et B comme indiqué ci-dessus, existe-t-il un meilleur moyen de créer un chemin de fichier car cela deviendra plus long, plus je plongerai dans l'arborescence des répertoires?

J'envisage une méthode intégrée existante à utiliser comme suit:

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

produisent un chemin de la forme /my/root/directory/in/here

S'il n'y a pas construit en fonction je me suis juste écrire un.

Merci pour toute contribution.

Répondre

52

Oui, il existe une telle fonction intégrée: os.path.join.

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

Vous voulez que la fonction path.join() de os.path.

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

Ce builds votre chemin avec os.sep (au lieu de moins '/' portable) et fait plus efficacement (en général) que l'utilisation +. Toutefois, cela ne créera pas réellement le chemin.

Pour cela, vous devez faire quelque chose comme ce que vous faites dans votre question. Vous pourriez écrire quelque chose comme:

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) 
Questions connexes