从配置文件中获取值的最佳方法是什么?

2024-10-01 15:39:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有15个值,我想从配置文件中获取,并将它们存储在单独的变量中。在

我正在使用

from ConfigParser import SafeConfigParser

parser = SafeConfigParser()
parser.read(configFile)

这是一个非常好的图书馆。在

选项1

如果我更改变量的名称并希望它与配置文件条目相匹配,则必须在函数中编辑相应的行

^{pr2}$

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

编辑: 下面是我尝试读取文件1并将所有值存储在dict中,然后尝试使用he值。 我有一根多线的线,我正在使用

%(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"]

Tags: parsergetvaluedef选项sectiononefile
3条回答

作为可能的解决方案:

module_variables = globals() # represents the current global symbol table
for name in ('one', 'two'):
    module_variables[name] = parser.get(section, name)
print one, two

一个解决方案也可以使用字典和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"]

要以dict形式从单个节中获取值:

options = dict(parser.items(section))

您可以像往常一样访问单个值:options["one"]options["two"]。在python3.2+中,configparser本身提供了类似dict的访问。在

为了灵活性,支持从各种源格式更新配置和/或集中配置管理;您可以定义自定义类来封装对配置变量的解析/访问,例如:

^{pr2}$

在本例中,单个值可用作实例属性:config.oneconfig.two。在

相关问题 更多 >

    热门问题