2011-08-29 1 views
0

Lorsqu'un projet Python obtient gros, certains segments de code, telles que les fonctions d'utilité publique, ont tendance à être exécuté à partir de divers endroits:verrouillage sur l'emplacement des fichiers dans un grand projet Python

  • d'un __main__
  • d'un processus serveur django
  • d'un test dans une suite de test

dans chaque cas, le répertoire de travail pour l'interpréteur python peut être différent et en supposant que le projet couvre Ove r un arbre sous-répertoire, la ligne suivante ne fonctionne pas toujours:

with open('some_file.xml','r') as my_xml: 

Il ne fonctionne pas parce que some_file.xml est pas toujours dans votre répertoire de travail. Vous devez être précis quant à l'emplacement du fichier, cependant, le projet peut être déployé dans divers environnements, donc ajouter simplement le répertoire à l'instruction open n'est pas une bonne solution.

Ce qui serait un moyen élégant et efficace de "verrouiller" l'emplacement du fichier tout au long du projet?

+0

Notez qu'un fichier de configuration souffrirait le même mauvais sort que le fichier xml - il est une ressource qui n » t existe toujours dans le même répertoire de travail ... – Jonathan

+0

La différence entre ma question et [cette question] (http://stackoverflow.com/questions/1967688/accessing-a-file-relatively-in-python-if-you -do-not-know-your-point-point) est que le code ne peut pas supposer a priori ce que le répertoire de travail est dans le répertoire du projet e – Jonathan

Répondre

1

en utilisant la variable suivante pour obtenir le répertoire du projet peut aider

 
__file__ 

How to make a python program path independent?

+0

oups !!! edit sur le chemin – jknair

+0

Bien que je ne veuille supposer rien au sujet du répertoire de travail, votre suggestion fonctionnera, parce que: J'ai besoin de la racine du projet dans le PYTHONPATH de toute façon, donc je peux toujours atteindre les fichiers à la racine du projet et là '__file__' peut être utilisé - merci! – Jonathan

+0

[Cette réponse] (http://stackoverflow.com/questions/1967688/accessing-a-file-relatively-in-python-if-you-do-not-know-your-starting-point/1967692#1967692) permet également d'utiliser '__file__' – Jonathan

Questions connexes