158 votes

Accéder aux données dans le sous-répertoire du paquet

J'écris un paquetage python avec des modules qui doivent ouvrir des fichiers de données dans un format ./data/ sous-répertoire. Pour l'instant, les chemins d'accès aux fichiers sont codés en dur dans mes classes et mes fonctions. J'aimerais écrire un code plus robuste qui puisse accéder au sous-répertoire quel que soit l'endroit où il est installé sur le système de l'utilisateur.

J'ai essayé plusieurs méthodes, mais jusqu'à présent, je n'ai pas eu de chance. Il semble que la plupart des commandes "current directory" renvoient le répertoire de l'interpréteur python du système, et non le répertoire du module.

Cela semble être un problème banal et courant. Pourtant, je n'arrive pas à le résoudre. Le problème vient en partie du fait que mes fichiers de données ne sont pas .py et je ne peux donc pas utiliser les fonctions d'importation et autres.

Des suggestions ?

Pour l'instant, mon répertoire de paquets ressemble à ceci :

/
__init__.py
module1.py
module2.py
data/   
   data.txt

J'essaie d'accéder à data.txt de module*.py !

6voto

Jacob Lyles Points 1004

Je crois que j'ai trouvé une réponse.

Je crée un module data_path.py, que j'importe dans mes autres modules contenant :

data_path = os.path.join(os.path.dirname(__file__),'data')

Ensuite, j'ouvre tous mes fichiers avec

open(os.path.join(data_path,'filename'), <param>)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X