我正在使用Jython并希望导入包含许多配置值的文本文件,例如:
QManager = MYQM
ProdDBName = MYDATABASE
等
..然后我逐行读取文件。
我现在无法理解的是,当我读取每一行并将=符号之前的任何内容分配给名为MYVAR
的本地循环变量并将=符号之后的任何内容分配给本地循环时变量MYVAL
- 如何确保循环结束后我有一堆全局变量,例如QManager
& ProdDBName
等。
我已经做了好几天 - 我真的希望有人可以提供帮助。
非常感谢, 布雷特。
答案 0 :(得分:1)
请参阅其他问题:Properties file in python (similar to Java Properties)
自动设置全局变量对我来说不是一个好主意。我更喜欢全局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']))