[英]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.py
在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
是一个包含变量名称和关联值的字典。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.