为了账号安全,请及时绑定邮箱和手机立即绑定

比较两个ini文件的键并将匹配键的值复制到python中的第二个ini文件

比较两个ini文件的键并将匹配键的值复制到python中的第二个ini文件

小唯快跑啊 2021-06-07 15:08:47
我有两个 INI 文件,a , b如下所示文件 a.ini############################################ Application## Var                          Values                  Comment## --------                     ------------------      ----------------- ------------------------------## Application                   1,2                    Each server is attached to a valid point##                                                      t2##                                                      1 = dummy, 2 = hdsapp=3sv=2type=ortserv=t2val=d7文件 b.ini############################################ Application## Var                          Values                  Comment## --------                     ------------------      -------------------- ---------------------------## Application                   1                      Each server is attached to a valid point##                                                      t2##                                                      1 = dummy, app=3sv=2type=ort3serv=t22stage=5我想将 的未注释键a.ini与 的未注释键进行比较b.ini。因此,如果键匹配,那么我想复制a.inito的匹配键的值b.ini而不会干扰注释,因为这是结构良好的文件。如果新键存在于a.ini该键中,则值会盲目复制到b.ini。并且当我们将匹配的值的键写入键b.ini的位置时不应改变。所以最终输出将如下所示############################################ Application## Var                          Values                  Comment## --------                     ------------------      -------------------- ---------------------------## Application                   1                      Each server is attached to a valid point##                                                      t2##                                                      1 = dummy, app=3sv=2type=ortserv=t2stage=5val=d7我遵循了以下方法,但它一直工作到读取两个INI文件的数据并打印匹配的字典密钥对。
查看完整描述

2 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

你的最后一个循环不太正确。 for x in y & z不像你认为的那样工作。此外,您必须使用and代替&.


试试这个:


for key, value in keys.items():

    if key in keys1 and keys1[key] == value:

        print(key, value)


查看完整回答
反对 回复 2021-06-09
?
函数式编程

TA贡献1807条经验 获得超9个赞

您可以使用以下代码


with open("out.ini", 'w') as outfile_handle:

   for key, value in keys1.iteritems():

      outfile_handle.write("%s\n" % separator.join([key, keys.get(key, value)]))

更新

如果您想要合并来自两个文件的所有键,您可以先创建两个键集的并集,然后对其进行迭代以形成文件。请参阅下面的代码。


with open("out.ini", 'w') as outfile_handle:

   all_keys = set(keys.keys() + keys1.keys())

   for key in all_keys:

      val1 = keys.get(key)

      val2 = keys1.get(key)

      outfile_handle.write("%s\n" % separator.join([key, val2 or val1]))

在这里, val2 或 val1 用于确保我们更喜欢第二个文件的值而不是第一个文件的值。如果您需要优先选择第一个文件的值而不是第二个文件,则应使用 val1 或 val2。


查看完整回答
反对 回复 2021-06-09
  • 2 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号