0

我正在使用 Jython 并希望导入一个包含许多配置值的文本文件,例如:

QManager = MYQM
ProdDBName = MYDATABASE

等等

..然后我逐行读取文件。

我现在无法弄清楚的是,当我阅读每一行并将 = 符号之前的任何内容分配给一个名为的局部循环变量并将MYVAR= 符号之后的任何内容分配给局部循环变量MYVAL时 - 我如何确保一次循环结束我有一堆全局变量,例如QManager&ProdDBName等。

我已经为此工作了好几天-我真的希望有人可以提供帮助。

非常感谢,布雷特。

4

1 回答 1

1

请参阅其他问题:python 中的属性文件(类似于 Java 属性)

自动设置全局变量对我来说不是一个好主意。我更喜欢全局ConfigParser对象或字典。如果您的配置文件类似于 Windows.ini文件,那么您可以读取它并设置一些全局变量,例如:

def read_conf():
    global QManager
    import ConfigParser
    conf = ConfigParser.ConfigParser()
    conf.read('my.conf')
    QManager = conf.get('QM', 'QManager')
    print('Conf option QManager: [%s]' % (QManager))

(这假设您的配置文件[QM]中有部分)my.conf

如果您想在没有ConfigParser类似模块或类似模块帮助的情况下解析配置文件,请尝试:

my_options = {}
f = open('my.conf')
for line in f:
    if '=' in line:
        k, v = line.split('=', 1)
        k = k.strip()
        v = v.strip()
        print('debug [%s]:[%s]' % (k, v))
        my_options[k] = v
f.close()
print('-' * 20)
# this will show just read value
print('Option QManager: [%s]' % (my_options['QManager']))
# this will fail with KeyError exception
# you must be aware of non-existing values or values
# where case differs
print('Option qmanager: [%s]' % (my_options['qmanager']))
于 2013-04-25T10:42:08.930 回答