我需要能够使用ConfigParser
读取同一键的多个值。配置文件示例:
[test]
foo = value1
foo = value2
xxx = yyy
使用“标准”ConfigParser
将有一个foo
带有值的键value2
。但是我需要解析器读取两个值。
在重复键输入之后,我创建了以下示例代码:
from collections import OrderedDict
from ConfigParser import RawConfigParser
class OrderedMultisetDict(OrderedDict):
def __setitem__(self, key, value):
try:
item = self.__getitem__(key)
except KeyError:
super(OrderedMultisetDict, self).__setitem__(key, value)
return
print "item: ", item, value
if isinstance(value, list):
item.extend(value)
else:
item.append(value)
super(OrderedMultisetDict, self).__setitem__(key, item)
config = RawConfigParser(dict_type = OrderedDict)
config.read(["test.cfg"])
print config.get("test", "foo")
print config.get("test", "xxx")
config2 = RawConfigParser(dict_type = OrderedMultisetDict)
config2.read(["test.cfg"])
print config2.get("test", "foo")
print config.get("test", "xxx")
第一部分(带有config
)读入我们的“常规”配置文件,仅保留value2
其值foo
(覆盖/删除其他值),然后得到以下预期输出:
value2
yyy
第二部分(config2
)使用我的方法将多个值附加到列表中,但输出是
['value1', 'value2', 'value1\nvalue2']
['yyy', 'yyy']
如何摆脱重复的价值观?我期望的输出如下:
['value1', 'value2']
yyy
要么
['value1', 'value2']
['yyy']
(我不在乎是否每个值都在列表中…)。任何建议欢迎。
进行少量修改后,我就能实现您想要的:
class MultiOrderedDict(OrderedDict):
def __setitem__(self, key, value):
if isinstance(value, list) and key in self:
self[key].extend(value)
else:
super(MultiOrderedDict, self).__setitem__(key, value)
# super().__setitem__(key, value) in Python 3
config = ConfigParser.RawConfigParser(dict_type=MultiOrderedDict)
config.read(['a.txt'])
print config.get("test", "foo")
print config.get("test", "xxx")
输出:
['value1', 'value2']
['yyy']
有什么方法可以使用两个不同的配置文件在settings.xml文件执行两个不同的构建在不同的服务器上?例如:在我的settings.xml文件中,我有两个配置文件: 现在,我想要一个项目的“test1”配置文件和另一个项目的“test2”,我希望我的pom.xml构建属性从settings.xml配置文件的属性中获取。 如果我将两个概要文件都保存在“activeProfiles”中,那么我的两个项
1-我有一个带有Spring Boot的API,我需要配置两个DBMS(MySQL和Postgres)。 2-对于每个DBMS,我需要配置不同的配置文件。(Dev,Prod) 遵循我的MySQL配置类: 我以为我的出口是: 重要: 当我将配置文件配置为连接到我的MySQL Dev数据库时,我只想连接到它。我想要同样的结果,当它是MySQL的Prod的基础时。 当我将配置文件配置为连接到我的Post
如您所知,您可以使用“主机”文件将主机名映射到IP地址。这非常有用,尤其是在您开发时,因为您可以更改项目1的localhost。 这部分很清楚,但不幸的是,我不知道如何设置它来打开具有相同IP的多个项目。我尝试了一些没有成功的事情,例如: 我查了一些相关的问题,但找不到答案。那么,我能以某种方式完成我想做的事情吗?有什么建议吗?
我在计算一个键的出现次数时遇到了一些问题,同时也保留了几个值。 通常我只会: 它给出了每个关键点的出现次数。 但是,我还希望在计算键的出现次数的同时,保留键每次出现的值。类似这样: 例如:如果键x(1)是一个国家,而x(2)是一个城市,那么我想保留一个国家的所有城市,并知道一个国家有多少个城市。
@cucumberoptions(features=“src/test/resources/features/xxxxx/xxxxx.feature”,标签=“@tag1”,胶={“com.xxxx.sfdc.opportunities.stepdefinities”},格式={“pretty”,“html:target/cucumber-reports/cucumber-pretty”,“jso
我有两个具有相同id的MDM配置文件,我想在同一设备上安装来自不同环境的两个不同应用程序。当我启用设备时,它将从设备中删除以前安装的应用程序。启用另一个MDM配置文件时,是否可以保存我已安装的应用程序?