Problème pour faire un dictionnaire avec une boucle .
Bonjour à tous,
je ne suis pas sur d’être au bonne endroit :) .
voici mon problème :
je fait des scan snmp sur des machines avec Python.
le code python me retourne un dictionnaire qui s'appelle "resultat".
L'objet "resultat" qui contient deux choses une information en clé (qui est assez complexe) et un résultat :
je vous montre un code basique pour lire l'objet 'resultat'
Code:
1 2 3 4 5 6 7 8 9 10 11
|
for cle,valeur in resultat.items():
Info = cle.split('_')
Codepostal = Info[0]
multiplexe = Info[1]
mesure =Info[2]
ip = Info[3]
voie = Info[4]
Model = Info[5]
#et la valeur = valeur |
bon jusqu'ici c'est pas compliqué
avec cette boucle je voudrais organisé ces informations dans un dictionnaire qui soit plus facilement manipulable ;) et même le mettre dans un fichier Json.
et il doit ressembler à ceci :
avec Codepostal, Multiplexe_voie et mesure sont des clés
Code:
1 2 3 4 5 6 7 8
|
Jsonfile ={
Codepostal:
{Multiplexe_voie:
{ip:"xxx", mesure:valeur}
}
}
} |
pour remplir le fichier Json je fait ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
for cle,valeur in resultat.items():
print cle + ' ' + valeur
site = cle.split('_')
ig = site[0]
mux = site[1]
mesure = site[2]
ip = site[3]
voie = site[4]
recepteur = site[5]
Multiplexes = site[1] + '_' + site[4]
jsonfileV2['data'].setdefault(ig, {})[Multiplexes]=({'ip':ip, mesure:valeur}) |
et évidement le problème c'est que le fichier Jsonfile ne conserve que la dernière ligne lu :(
ex:
voici un exemple de résultat
2301301_R2_RfStatus_10.123.38.59_A_Harmonic 1
2301301_R2_margin_10.123.38.59_A_Harmonic 476
2301301_R2_ebn0_10.123.38.59_A_Harmonic 1132
2301301_R2_cn_10.123.38.59_A_Harmonic 1546
et voici ce que me donne la boucle :
Jsonfile['data'] = {"2301301": {"R2_A": {"ip": "10.123.38.59", "cn": "1540"}}
alors que je voudrais avoir ceci :
Jsonfile['data'] = {"2301301": {"R2_A": {"ip": "10.123.38.59", "cn": "1540", "margin": "476", "ebn0":"1132", "RfStatus":"1"}}
avez vous une idée ?