Python程序,用于识别.py文件的变量并打印它们

2024-04-25 14:06:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要创建一个程序来查找.py文件的所有变量(全局变量和局部变量)并打印它们。 但是我不知道如何在另一个.py文件上使用函数dir()或global()/local()来搜索变量

你能帮我吗? def IdentificationVariables(名称):

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)

Tags: 文件函数pypos程序fordirglobal
1条回答
网友
1楼 · 发布于 2024-04-25 14:06:30

您想编写“一个查找所有变量的程序”。我想提前警告您,如果您关心彻底性,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'

这对于用作配置设置等存储的模块来说并不少见

相关问题 更多 >