簡體   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