Python配置-遍历部分并创建变量

问题描述

我在一系列Python文件中设置了各种变量,我想将它们移到配置文件中。尽管python config解析器库使我可以集中这些变量,但在每个文件中仍需要大量代码才能获取每个配置设置并分配给变量。

我想做的是最小化用于设置这些变量的代码。因此,对于下面的settings.ini,我希望能够使用setvars('QUEUE')之类的内容来遍历名为QUEUE的部分,并在当前文件中设置与它们在settings.ini文件中的键相同名称的变量。 。我尝试了几种方法,但没有成功。这有可能吗?

[QUEUE]
queueSrvr = '192.168.0.50'
queuePort = 5672
queueUser = 'guest'
queuePass = 'guest'

[DATABASE]
dbase  = 'robotAI'
user   = 'root'
passwd = 'Password123'
servr  = 'localhost'

下面是恕我直言应该起作用的一个示例。

import configparser

def setvariables(section):
    global x
    x = "just a test"
    config = configparser.ConfigParser()
    config.sections()
    config.read('/home/lee/Downloads/robotAI4/settings.ini')
    data = dict(config.items(section))
    for key in data:
        print('global ' + key)
        exec('global ' + key)
        print(key + ' = ' + data[key])
        exec(key + ' = ' + data[key])
        
setvariables('QUEUE')   

print (x)
print (queueuser)

但是我从中得到的是以下输出

global queuesrvr
queuesrvr = '192.168.0.50'
global queueport
queueport = 5672
global queueuser
queueuser = 'guest'
global queuepass
queuepass = 'guest'
just a test
Traceback (most recent call last):
  File "Downloads/robotAI4/test.py",line 20,in <module>
    print (queueuser)
NameError: name 'queueuser' is not defined

很显然,循环遍历这些值并运行全局语句,然后设置这些值。那么,为什么x在函数之外有一个值,但没有queueuser?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...