Skip to main content
 首页 » 编程设计

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

2025年05月04日15tintown

一段时间以来,我一直在尝试读取 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())))