无法从其他文件打印变量

Trouble printing variables from other files

描述

我有一个脚本 → report_creator.py,它需要来自另一个 python 脚本的一些变量 → extracted_data.py。 来自 extracted_data.py 的变量数量将始终基于它从中提取数据的系统(如果系统有 1 个服务器,我们将有 1 个变量,如果系统有 2 个服务器,我们将有 2 个变量,依此类推).您永远无法知道 extracted_data.py 将具有的确切变量数。

假设我们已经从具有 2 个服务器的系统中提取数据并且 extracted_data.py 文件类似于:

parameterx_server1 = "value"
parameterx_server2 = "another value"

我有:report_creator.py

import os
import extracted_data

#Extract all variables names starting with parameterx from extracted_data.py and store them into a list

variables = os.popen("""cat extracted_data.py | grep '^parameterx_*' | awk '{print }'""").read().strip()
variables = variables.split("\n")

#After the execution of the command, the list looks like this:
# variables = ['parameterx_server1', 'parameterx_server2']

问题

脚本现在有一个列表,其中包含来自 extracted_data.py:

的所有 parameterx 变量
variables = ['parameterx_server1', 'parameterx_server2']

剩下的就是从extracted_data.py的变量列表中获取每个变量对应的值,比如:

print extracted_data.parameterx_server1

我试过类似的方法:

for variable in variables:
    print extracted_data.variable

但出于某种原因我得到了 AttributeError: 'module' object has no attribute 'variable'

您可以像这样提取 extracted_data.py 文件中定义的变量及其值:

import extracted_data

extract_vars = {name: getattr(extracted_data, name)
                    for name in dir(extracted_data) if not name.startswith('_')}
print(extract_vars)  # -> {'parameterx_server2': 'another value', 'parameterx_server1': 'value'}

如图所示,之后extract_vars是一个包含变量名关联值的字典。