繁体   English   中英

无法从其他文件打印变量

[英]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 $1}'""").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.pyextracted_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是一个包含变量名称关联值的字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM