Как вывести список всех переменных из другого файла (кода)?
Например есть файл кода (text.py):
a = 5
b = 'hello'
c = True
def d ():
f = 4
class x ():
l = 4
Нужно открыть файл в другом коде и получить список всех переменных без аргументов
Вывод должен выглядеть так:
['a', 'b', 'c', 'f', 'l']
Пробовал сделать так:
example = open ('text.py')
members = [attr for attr in dir(example) if not callable(getattr(example, attr)) and not attr.startswith("__")]
print (members)
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Если как в вашем варианте, то можно регулярками найти просто все присваивания:
import re
pattern = re.compile(r'\s*(\w+)\s*=')
result = set()
with open('text.py') as f:
for line in f:
m = re.match(pattern, line)
if m:
result.add(m[1])
print(result)
# {'b', 'a', 'c', 'l', 'f'}
Но, конечно, случаи могут быть сложнее и тогда такой вариант уже не прокатит.
Множество использовано на случай повторных присваиваний в ту же переменную.