Python программа, которая определяет переменные файла .py и печатает их - PullRequest
0 голосов
/ 11 февраля 2020

Мне нужно создать программу, которая находит все переменные файла .py (глобальные и локальные) и печатает их. Но я не знаю, как использовать функцию dir () или global () / local () в другом файле .py для поиска переменных.

Не могли бы вы мне помочь? def IdentifVariables (имя):

file = open (name,'r')
variablesStr = "The variables on code are: \n"
contL=0
for linea in file:
    contL = contL + 1
    pos = linea.find(str(dir()))
    #No se donde meter el for para pegarlo con el po
    if(pos>-1):
                variablesStr += linea[pos+1:len(linea)] + ": line " + contL
file.close()
print(variablesStr)

1 Ответ

0 голосов
/ 11 февраля 2020

Вы хотите написать "программу, которая находит все переменные". Я хотел предупредить вас заранее, что Python сделает это исключительно трудным, если вы заботитесь о тщательности. Если вы не , как будто вы просто ищете наиболее распространенный случай foo = "bar", хорошо: вы можете использовать что-то вроде ast.parse для поиска присвоений переменных, и это, вероятно, даст вам 99% пути.

Но если ваша цель - найти каждую переменную в модуле, рассмотрите этот фрагмент:

vars().update({"spam": "eggs"})

print(spam)

Подход поиска переменных не обнаружит этого. Также учтите, что для данного модуля могут быть установлены переменные с помощью других вещей:

>>> import requests
>>> requests.spam
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'requests' has no attribute 'spam'
>>> setattr(requests, 'spam', 'eggs')
>>> requests.spam
'eggs'

Это не редкость для модулей, которые служат хранилищем для параметров конфигурации и тому подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...