Python:如何从导入中打印所有常量的值?

时间:2018-06-19 07:07:52

标签: python variables import names

我将我的常量(可以是一个dict。)分组并存储在一个单独的python文件中。例如。 parameters.py:

HARD_COPY=True
BOOKS={
    2018:{"author":"Hugo"}
    }
etc.

在源文件中,我写道:

import parameters as para

当然,我可以使用知道其名字的变量(para.BOOKS等)。 但我想展示他们的名字和价值观,无论这些名字是什么。

如果我写dir(para),我可以看到这些名字的列表。 但是我如何打印他们的价值观呢?

我想显示:

My defined variables in parameters.py : 
HARD_COPY : True
BOOKS     : {2018:{"author":"Hugo"}}
etc.

4 个答案:

答案 0 :(得分:1)

如果你正在考虑存储常量(或配置变量),你应该考虑将它们存储为json格式。

我们假设您有一个名为config.json的配置文件,其中包含以下值

{
  "HARD_COPY": true,
  "BOOKS": {
    "2018": {
      "author": "Hugo"
    }
  }
}

您可以使用以下

.py文件加载这些值
import json

with open('config.json') as f:
    data = json.load(f)

然后迭代这些值,您可以执行以下操作

Python 2.7

for key, val in my_books.iteritems(): 
    print(key, val)

>>>('HARD_COPY', True)
>>>('BOOKS', {2018: {'author': 'Hugo'}})

Python 3

for key, val in my_books.items():
    print(key, val)

>>> HARD_COPY True
>>> BOOKS {2018: {'author': 'Hugo'}}

答案 1 :(得分:1)

使用getattr按名称访问其值。

import parameters as para


print('My defined variables in parameters.py : ')

for variable in dir(para):
    if not variable.startswith('__'):
        print(variable, ':', getattr(para, variable))

输出:

My defined variables in parameters.py :
BOOKS : {2018: {'author': 'Hugo'}}
HARD_COPY : True

答案 2 :(得分:0)

试试这个:

import parameters as para
for name in dir(para):
    if not name.startswith('__'):
        myvalue = eval('para.%s'%name)
        print(name,"is",myvalue)

输出:

BOOKS is {2018: {'author': 'Hugo'}}
HARD_COPY is True

答案 3 :(得分:0)

假设这是一个“普通”模块,您可以使用__dict__

import parameters as para

for k, v in para.__dict__.items():
    if k.isupper():
        print("name:", k, "value:", v)

我使用过isupper(),因为这是常量的约定(虽然它们不是真的)。​​

给出:

name: HARD_COPY value: True
name: BOOKS value: {2018: {'author': 'Hugo'}}

编辑感谢@ Aran-Fey