我想从配置文件中获取15个值,并将它们存储在单独的变量中。
我正在使用
from ConfigParser import SafeConfigParser
parser = SafeConfigParser()
parser.read(configFile)
这是一个非常好的图书馆。
选项#1
如果我更改变量的名称并希望它与配置文件条目匹配,我必须编辑函数中的相应行
def fromConfig():
#open file
localOne = parser.get(section, 'one')
localTwo = parser.get(section, 'two')
return one, two
one = ''
two = ''
#etc
one, two = fromConfig()
选项#2
查看变量从哪里获取值更清晰,但是我会为每个变量打开和关闭文件
def getValueFromConfigFile(option):
#open file
value = parser.get(section, option)
return value
one = getValueFromConfigFile("one")
two = getValueFromConfigFile("two")
选项#3
这个没有多大意义,因为我必须有另一个所有变量名列表,但功能更清晰。
def getValuesFromConfigFile(options):
#open file
values = []
for option in options:
values.append(parser.get(section, option))
return values
one = ''
two = ''
configList = ["one", "two"]
one, two = getValuesFromConfigFile(configList)
修改 这是我尝试读取文件一并将所有值存储在dict中然后尝试使用他的值。 我有一个多线的字符串,我正在使用
%(nl)s to be a new line character so then when I get the value
message = parser.get(section, 'message', vars={'nl':'\n'})
这是我的代码:
from ConfigParser import SafeConfigParser
def getValuesFromConfigFile(configFile):
''' reads a single section of a config file as a dict '''
parser = SafeConfigParser()
parser.read(configFile)
section = parser.sections()[0]
options = dict(parser.items(section))
return options
options = getValuesFromConfigFile(configFile)
one = options["one"]
答案 0 :(得分:2)
要将单个部分的值作为dict获取:
options = dict(parser.items(section))
您可以照常访问各个值:options["one"]
,options["two"]
。在Python 3.2+中,configparser本身提供了类似dict的访问。
为了灵活性,支持从各种源格式更新配置和/或集中配置管理;你可以定义封装解析/访问配置变量的自定义类,例如:
class Config(object):
# ..
def update_from_ini(self, inifile):
# read file..
self.__dict__.update(parser.items(section))
在这种情况下,个别值可用作实例属性:config.one
,config.two
。
答案 1 :(得分:0)
作为一种可能的解决方案:
module_variables = globals() # represents the current global symbol table
for name in ('one', 'two'):
module_variables[name] = parser.get(section, name)
print one, two
答案 2 :(得分:0)
解决方案也可以使用词典& json可以让事情变得简单而且可重复使用的
import json
def saveJson(fName, data):
f = open(fName, "w+")
f.write(json.dumps(data, indent=4))
f.close()
def loadJson(fName):
f = open(fName, "r")
data = json.loads(f.read())
f.close()
return data
mySettings = {
"one": "bla",
"two": "blabla"
}
saveJson("mySettings.json", mySettings)
myMoadedSettings = loadJson("mySettings.json")
print myMoadedSettings["two"]