2013-04-25 60 views
0

我使用Jython和希望導入包含許多配置值,如文本文件:的Jython - 導入文本文件分配全局變量

QManager = MYQM 
ProdDBName = MYDATABASE 

..然後我我正逐行閱讀文件。

什麼我無法弄清楚現在是因爲我讀的每一行,並已經分配無論是之前等號(=)來命名MYVAR和分配無論是後等號(=)到本地循環變量MYVAL局部循環變量 - 我怎麼保證一旦循環結束我有一大堆的全局變量,如QManager & ProdDBName

我一直工作在這幾天 - 我真的希望有人可以提供幫助。

非常感謝, 佈雷特。

+0

相關:你怎麼能動態地通過while循環創建Python中的變量?(HTTP:// stackoverfl ow.com/q/5036700/4279) – jfs 2013-04-25 21:40:48

回答

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)) 

(這裏假設你有你的my.conf配置文件[QM]部分)

如果您要分析無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'])) 
+0

非常感謝您的建議。我現在可以做我想做的事了。爲了讓事情更整潔 - 我將如何遍歷配置文件的每一行,並設置配置選項而不知道配置文件中的配置選項是什麼? – user2267805 2013-04-25 23:25:44

+0

+1:一個字典,ConfigParser,pyjavaproperties或java.util.Properties是要走的路。 – jfs 2013-04-26 12:41:47