2017-10-18 4 views
1

J'ai un dossier qui contient des scripts .py et chacun contient la même variable dont j'ai besoin dans un autre script si ce script est utilisé à partir de ce dossier.Importer une même variable à partir de plusieurs bibliothèques de différents dossiers

  • folder_x
    • main.py
    • folder_y
      • script1.py
      • script2.py
      • script3.py

Tous les scripts ne sont donc pas utilisés en même temps.

J'ai trouvé cette solution https://stackoverflow.com/a/35524184/5708537 Et cela fonctionne bien mais je dois lister tous les scripts manuellement. Je pensais que j'automatiser cela et faire une liste des fichiers, et de la bande sur la .py fin

path = '/home/folder_x/folder_y' 
files = os.listdir(path) 
module_list = [i for i in files if i.endswith('.py')] 
module_list = [os.path.splitext(x)[0] for x in module_list] 

fonctionne comme un charme.

Mais cette partie du code pense toujours que les scripts sont folder_x

variables = {} 
for mod_name in module_list: 
mod = import_module(mod_name) 
variables[mod_name] = getattr(mod, 'var') 

Alors, comment puis-je savoir que les scripts sont en folder_y et prennent cette variable de ceux?

Ou existe-t-il un meilleur moyen de lister les scripts/modules d'un autre dossier, et d'obtenir une variable de chacun d'entre eux?

Répondre

0

Si vous souhaitez importer votre propre .py, placez-les simplement dans le même répertoire que le programme qui l'appelle. Par exemple:

from mymodule import *

Cela vous permet d'exécuter toutes les fonctions et méthodes dans ce fichier.

+0

Oui, je le sais, mais je veux garder les choses séparées. – Taapsa