Как вывести список всех переменных из другого файла (кода)?

Например есть файл кода (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'}

Но, конечно, случаи могут быть сложнее и тогда такой вариант уже не прокатит.

Множество использовано на случай повторных присваиваний в ту же переменную.

→ Ссылка