python - 在不导入/运行的情况下查看另一个 Python 文件的变量

标签 python variables

一段时间以来,我一直在尝试读取 python 文件并打印其变量。是否可以在不导入或运行的情况下查看和打印另一个文件的变量?我已经搜索过的所有内容都只解释了如何导入或使用 execfile 等...(免责声明,我可能很笨)

这是我目前所拥有的:

for vars in dir():
   print(vars)

现在,这对于运行它的文件来说工作得很好,但是当我尝试这段代码时:

for vars in file:
   print(vars)

(文件只是 path.read())

好吧,它在新的一行上给了我文件的每个字符。我完全不知道我的循环是否正确。我是否必须编写一些东西来手动查找每个变量,然后将其添加到列表中?

最佳答案

使用ast.parse解析代码,通过迭代具有body属性的节点(即代码块)递归遍历节点,寻找分配 对象并获取它们的 targets(这是被分配了值的变量,这就是您正在寻找的)并获取它们的 id 属性,如果它们是 Name 对象。

file.py替换成你要解析的python脚本的文件名后,试试下面的代码。

import ast
import _ast

def get_variables(node):
    variables = set()
    if hasattr(node, 'body'):
        for subnode in node.body:
            variables |= get_variables(subnode)
    elif isinstance(node, _ast.Assign):
        for name in node.targets:
            if isinstance(name, _ast.Name):
                variables.add(name.id)
    return variables

print(get_variables(ast.parse(open('file.py').read())))

关于python - 在不导入/运行的情况下查看另一个 Python 文件的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51118006/

相关文章:

Javascript 内存节省 - if 语句 var 声明

java - java变量可以是无界通配符吗?

Python:读写TIFF 16位,三 channel ,彩色图像

Python:函数中 int 减 1

python守护进程信号不起作用

c - 从 C 中的变量值中查找变量

c++ - 局部变量持有相同的内存地址

javascript - 在 xpath 中使用动态变量

python - 如何获得一个月的最后一天?

python - 如何编写一个Python程序来读取输入并将其转换为带有 turtle 图形的预定义14段字符?