无法从其他文件打印变量
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
是一个包含变量名和关联值的字典。
描述
我有一个脚本 → 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
是一个包含变量名和关联值的字典。