Problem mit pickle file -> dict appenden geht nicht
Verfasst: Mittwoch 16. Juli 2008, 18:09
hallo..
ich benutze ein pickle file um daten zu speichern (dictChecksum). Das script läuft jeden Tag.. ich möchte gerne am Ende eines Tages die neuen Werte (dictNewChecksum) an das pickle file appenden. Da das Script gleichzeitig auf mehreren Rechnern läuft muss ich es appenden anstatt zu überschreiben, da ich ansonsten Werte verlieren könnte.
Nach dem appenden, sehe ich im *.pkl file die neuen Werte. Weiss das es binary ist, aber checksum werte sind ja ersichtlich da sie (bei mir) hexadezimal sind. ABER wenn ich das pickle file lade, und den dict printe, sehe ich nur die alten werte, die neuen hinzugefügten sind nicht da...
Hinzufügen zum neuen dict:
Laden des pickl files:
Schreiben des pickle files am Ende:
Woran kann es liegen?? 'ab' gibt es ja, sonst würde ich im pickle File die neue checksumme ja nicht sehen... es scheint, als würde das neue dict in ein unterelement des normalen dict degradiert werden und somit nicht mehr lesbar für den pickle parser..
hoffe ich habe nichts offensichtliches übersehen....
ich benutze ein pickle file um daten zu speichern (dictChecksum). Das script läuft jeden Tag.. ich möchte gerne am Ende eines Tages die neuen Werte (dictNewChecksum) an das pickle file appenden. Da das Script gleichzeitig auf mehreren Rechnern läuft muss ich es appenden anstatt zu überschreiben, da ich ansonsten Werte verlieren könnte.
Nach dem appenden, sehe ich im *.pkl file die neuen Werte. Weiss das es binary ist, aber checksum werte sind ja ersichtlich da sie (bei mir) hexadezimal sind. ABER wenn ich das pickle file lade, und den dict printe, sehe ich nur die alten werte, die neuen hinzugefügten sind nicht da...
Hinzufügen zum neuen dict:
Code: Alles auswählen
ch = meineChecksumme
self.checksumNewDict[ch] = {"lastIns":int(time.time()),"sysId":sysId}
Code: Alles auswählen
fp = open(self.checksumFilePath, "rb")
self.checksumDict = pickle.load(fp)
Code: Alles auswählen
fp = open(self.checksumFilePath, "ab")
print "@@@@@@", self.checksumNewDict
pickle.dump(self.checksumNewDict, fp)
fp.close()
hoffe ich habe nichts offensichtliches übersehen....