cPickle läuft under Windows, aber Linux nicht
Verfasst: Sonntag 1. Juni 2008, 09:19
Hi Leute.
Ich habe einen eigenen CS:S Server auf dem ich Matties EventScripts 2.0 installiert habe. Dieses Plugin erlaubt mir, auf einem CS:S Server mit Python zu arbeiten. Das ganze hat etwas mit den Statistiken der Spieler zu tun. Das mal Vorweg
Als ich noch nicht soviel Ahnung von Python hatte, habe ich die Userstats sehr kompliziert gespeichert mit cPickle. Das ganze ist auf dem Root passiert (Linux Ubuntu 7.10), es hat auch immer wunderbar geklappt. Doch vor 2 Tagen habe ich angefangen, mein Stats-System neu zu schreiben um es schneller zu machen. Dazu habe ich dann die gespeicherte rank.db von meinem Server geladen (auf meinen Windows PC) und mit einem Konverter von mir Konvertiert, was das ganze in 2 Dateien aufteilte: rank.db und rankcounter.db
Wenn ich unter Windows nun mein Stats-System teste, funktioniert es mit der "konvertierten" cPickle Datenbank bestens - es läuft viel schneller als vorher und es gibt keinen einzigen Fehler.
Als ich dann alles andere soweit fertig hatte, habe ich das neue Script hochgeladen inklusive der neuen Datenbanken.
Doch dann musste ich feststellen, dass es beim Laden der Datei zu einem Fehler kommt:
Ich verstehe überhaupt nicht, was der Fehler mit "ValueError: could not convert string to float" meint.
Die dazugehörige Funktion, die db-Funktion ist hier:
(Der Code ist richtig, alle anderen Scripts die Datenbanken verwenden funktionieren super damit.)
Ich hoffe ich habe mein Problem gut genug beschrieben
Vielleicht kann mir da ja einer helfen.
~ Chris
Ich habe einen eigenen CS:S Server auf dem ich Matties EventScripts 2.0 installiert habe. Dieses Plugin erlaubt mir, auf einem CS:S Server mit Python zu arbeiten. Das ganze hat etwas mit den Statistiken der Spieler zu tun. Das mal Vorweg
Als ich noch nicht soviel Ahnung von Python hatte, habe ich die Userstats sehr kompliziert gespeichert mit cPickle. Das ganze ist auf dem Root passiert (Linux Ubuntu 7.10), es hat auch immer wunderbar geklappt. Doch vor 2 Tagen habe ich angefangen, mein Stats-System neu zu schreiben um es schneller zu machen. Dazu habe ich dann die gespeicherte rank.db von meinem Server geladen (auf meinen Windows PC) und mit einem Konverter von mir Konvertiert, was das ganze in 2 Dateien aufteilte: rank.db und rankcounter.db
Wenn ich unter Windows nun mein Stats-System teste, funktioniert es mit der "konvertierten" cPickle Datenbank bestens - es läuft viel schneller als vorher und es gibt keinen einzigen Fehler.
Als ich dann alles andere soweit fertig hatte, habe ich das neue Script hochgeladen inklusive der neuen Datenbanken.
Doch dann musste ich feststellen, dass es beim Laden der Datei zu einem Fehler kommt:
Ich verstehe überhaupt nicht, was der Fehler mit "ValueError: could not convert string to float" meint.
Die dazugehörige Funktion, die db-Funktion ist hier:
Code: Alles auswählen
def db(kommando, name, mdict = {}):
rdict = {}
if kommando == "dump":
datei = open("%s/db/%s.db" % (es.getAddonPath("ccc"), name), "w")
cPickle.dump(mdict, datei)
datei.close()
return 1
else:
if os.path.isfile("%s/db/%s.db" % (es.getAddonPath("ccc"), name)):
datei = open("%s/db/%s.db" % (es.getAddonPath("ccc"), name), "r")
rdict = cPickle.load(datei)
datei.close()
return rdict
Ich hoffe ich habe mein Problem gut genug beschrieben
Vielleicht kann mir da ja einer helfen.
~ Chris