У меня есть два 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
, не нарушая комментарии, потому что это хорошо структурированный файл. Если новые ключи присутствуют в 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)