微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。