ich bin Anfänger, was die Entwicklung in Python angeht. Für ein Programm an meinem Raspberry Pi habe ich angefangen in Python zu entwickeln und würde jetzt gerne mit der Klasse http://sourceforge.net/projects/pyxser/ ein Log-File schreiben. Die Serialisierung ist kein Problem. Nur beim Deserialisieren steh ich vor einem für mich unlösbaren Problem. Ich kann mir nicht erklären, warum das nicht geht. Vielleicht hat hier ja jemand schon Erfahrung mit pyxser und kann mir helfen.
Ich habe eine kleine Test-Programm geschrieben, das so aussieht:
Code: Alles auswählen
from base_lib import cLog
print('PI is starting.')
oLog = cLog.cLog()
oLog.ReadXMLLog("temp.xml")
oLog.AddXMLLog(10, "test", "SDGFHDSGF")
oLog.WriteXMLLog("temp.xml")Code: Alles auswählen
import pyxser
from time import gmtime, strftime
class cLog(object):
'''
Klasse zum Handling der Log-Files
'''
lstLogMessages = []
sPath = None
def __init__(self):
'''
Constructor
'''
def AddXMLLog(self, tStatus, tPgm, tText):
'''
Schreibt eine Log-Datei
'''
self.lstLogMessages.append(cLogMessage(tStatus, tPgm, tText))
self.lstLogMessages = self.lstLogMessages
def WriteXMLLog(self, tPath):
'''
Schreibt eine Log-Datei
'''
self.sPath = tPath;
oLogFile = open(self.sPath, "w")
oSer = pyxser.serialize(obj = self, enc="utf-8")
oLogFile.write(oSer)
oLogFile.close()
def ReadXMLLog(self, tPath):
'''
Liest eine Log-Datei
'''
self.sPath = tPath
oLogFile = open(self.sPath ,"r")
oStream = oLogFile.read()
oUnSer = pyxser.unserialize(obj = oStream, enc="utf-8")
self = oUnSer
oLogFile.close()Und die cLog soll eine Liste von der Klasse cLogMessage bekommen:
Code: Alles auswählen
class cLogMessage(object):
oDate = None
nStatus = None
sText = None
sPgm = None
def __init__(self, tStatus = None ,tPgm = None ,tText = None):
'''
Constructor
'''
if (tStatus != None) and (tPgm != None) and (tText != None):
self.oDate = strftime("%H:%M:%S",gmtime())
self.sPgm = tPgm
self.nStatus = tStatus
self.sText = tText
Fehler bekomme ich folgenden
Code: Alles auswählen
Traceback (most recent call last):
File "/home/christian/shared/rpicam/Programmcode/rpicam/rpicam/start.py", line 16, in <module>
oLog.AddXMLLog(10, "test", "SDGFHDSGF")
File "/home/christian/shared/rpicam/Programmcode/rpicam/rpicam/base_lib/cLog.py", line 26, in AddXMLLog
self.lstLogMessages.append(cLogMessage(tStatus, tPgm, tText))
File "/home/christian/shared/rpicam/Programmcode/rpicam/rpicam/base_lib/cLog.py", line 61, in __init__
self.oDate = strftime("%H:%M:%S",gmtime())
SystemError: ../Objects/classobject.c:511: bad argument to internal functionViele Grüße
Chris
