问题描述
我在一系列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 (将#修改为@)