【发布时间】:2019-02-08 15:51:06
【问题描述】:
我有两个 INI 文件 a , b 如下所示
文件 a.ini
##########################################
## Application
## Var Values Comment
## -------- ------------------ -----------------
------------------------------
## Application 1,2 Each server is attached to a valid point
## t2
## 1 = dummy, 2 = hds
app=3
sv=2
type=ort
serv=t2
val=d7
文件 b.ini
##########################################
## Application
## Var Values Comment
## -------- ------------------ --------------------
---------------------------
## Application 1 Each server is attached to a valid point
## t2
## 1 = dummy,
app=3
sv=2
type=ort3
serv=t22
stage=5
我想将a.ini 的未注释键与b.ini 的未注释键进行比较。因此,如果键匹配,那么我想将匹配键的值复制 a.ini 到 b.ini 而不会干扰 cmets,因为这是结构良好的文件。如果a.ini 中存在新键,则该键、值会盲目复制到b.ini。当我们将值的匹配键写入b.ini时,键的位置不应该改变。
所以最终的输出将如下所示
##########################################
## Application
## Var Values Comment
## -------- ------------------ --------------------
---------------------------
## Application 1 Each server is attached to a valid point
## t2
## 1 = dummy,
app=3
sv=2
type=ort
serv=t2
stage=5
val=d7
我遵循了以下方法,但它一直有效,直到读取两个 INI 文件的数据并打印匹配的字典键对。
separator = "="
keys = {}
with open('test.ini') as f:
for line in f:
if separator in line:
name, value = line.split(separator, 1)
keys[name.strip()] = value.strip()
separator1 = "="
keys1 = {}
with open('temp.ini') as f1:
for line in f1:
if separator1 in line:
name, value = line.split(separator1, 1)
keys1[name.strip()] = value.strip()
for key, value in keys.viewitems() & keys1.viewitems():
print(key, value)
【问题讨论】:
-
使用 Python 的 configparser 模块
标签: python file copy compare ini