J'ai un module python avec beaucoup de scripts python, je veux lire ces scripts et vérifier si une variable est définie.Vérifiez si la variable est définie dans plusieurs scripts
Je suis en train de lire les fichiers ligne par ligne, mais comme les scripts que je suis en train de lire sont en python, je suppose qu'il y a un meilleur moyen?
for filename in glob.glob(os.path.join(my_path, '*.py')):
with open(filename) as f:
for line in f:
if 'my_variable' in line:
variable_exists = True
Modifier
J'ai un répertoire qui a beaucoup de classes, certains ont des variables qui influent sur la façon dont le script est exécuté. par exemple.
class Script1():
name = 'script1'
countrys = ['US', 'UK', 'AU']
class Script2():
name = 'script2'
countrys = ['US', 'CA']
A partir de ce que je veux obtenir
[
{'name': 'script1', 'country': 'US'},
{'name': 'script1', 'country': 'UK'},
{'name': 'script1', 'country': 'AU'},
{'name': 'script2', 'country': 'US'},
{'name': 'script2', 'country': 'CA'}
]
Vous pouvez utiliser ['importlib'] (https://docs.python.org/3/library/importlib.html), importer les scripts un par un et vérifier la définition de la variable. Si c'est trop sale, les analyser avec ast.parse et vérifier récursivement l'arbre entier. Voulez-vous vérifier s'il est possible que la variable puisse être définie dans n'importe quelle partie du code? Si cette partie est accessible? Si ce sera atteint lors de l'exécution? – L3viathan
Il serait intéressant de connaître le raisonnement ici, parce que je soupçonne qu'il y a quelque chose qui pourrait être fait mieux ou d'une autre manière, mais ce que L3viathan suggère avec 'importlib', c'est ce que je ferais, si vous demandez est ce que je devais absolument faire. – kungphu
@kungphu J'ai ajouté plus d'un exemple à la question. J'espère que cela aide à expliquer ce que j'essaie d'accomplir. – lennard