[英]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.