Jython的 - 导入文本文件分配全局变量(Jython - importing a text f

2019-10-29 04:34发布

我使用的Jython和希望导入包含许多配置值,如文本文件:

QManager = MYQM
ProdDBName = MYDATABASE

等等

..然后我读通过行的文件行。

什么我无法弄清楚现在是因为我读的每一行,并已经分配无论是之前等号(=)到本地循环变量命名MYVAR和分配无论是后等号(=)到本地循环变量MYVAL -我怎么保证一旦循环结束我有一大堆的全局变量如QManagerProdDBName等。

我一直工作在这几天 - 我真的希望有人可以提供帮助。

非常感谢,布雷特。

Answer 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']))


文章来源: Jython - importing a text file to assign global variables
标签: jython