我使用的Jython和希望导入包含许多配置值,如文本文件:
QManager = MYQM
ProdDBName = MYDATABASE
等等
..然后我读通过行的文件行。
什么我无法弄清楚现在是因为我读的每一行,并已经分配无论是之前等号(=)到本地循环变量命名MYVAR
和分配无论是后等号(=)到本地循环变量MYVAL
-我怎么保证一旦循环结束我有一大堆的全局变量如QManager
& ProdDBName
等。
我一直工作在这几天 - 我真的希望有人可以提供帮助。
非常感谢,布雷特。
请参阅其他问题: 属性在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']))