Problem mit Pickle

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ruebe
User
Beiträge: 3
Registriert: Dienstag 24. Februar 2009, 17:45

Dienstag 24. Februar 2009, 17:59

Hi, ich bin neu in Python. Bisher noch ohne Probleme, aber an der Stelle komm ich nicht weiter.

Meine Informationen wie ich mit Pickle zu arbeiten habe, hab ich von hier
http://docs.python.org/library/pickle.html
Die Beispiele funktionieren auch alle und so denke ich eigtl auch das ich's verstanden habe.

Nun zum Problem:

Ich versuche mit pickel eine Instanz der folgenden Klasse zu speichern

Code: Alles auswählen

class ConfigData:
	outputdir = ''
	scriptsrc = ''
	sessionsrc = ''
Die Instanz habe ich global Definiert

Code: Alles auswählen

configdata = ConfigData()
Der Code zum speichern sieht so aus

Code: Alles auswählen

class DialogOptions(design.DialogOptions):
...
    def On_button_apply(self, event):
        self.EndModal(wx.ID_APPLY)
        #Daten übernehmen und speichern
        configdata.outputdir=self.text_outputdir.GetValue()
        configdata.scriptsrc=self.text_script.GetValue()
        configdata.sessionsrc=self.text_session.GetValue()
        f=open('rapidload.cfg','wb')
        pickle.dump(configdata,f)
        f.close()

...
Man sieht es müssten da dann auch Daten existieren. Allerdings stehen in der Datei am ende keinerlei Daten die ich wiederverwenden könnte. Abgepseichert wird nur folgendes:

(i__main__
ConfigData
p1
(dp2
b.

Wenn ich versuche die 3 Werte einzeln zu speichern, werden nur 3 leere Strings in der Datei gespeichert.

Wo liegt das Problem?
Birne94
User
Beiträge: 90
Registriert: Freitag 28. November 2008, 15:18
Kontaktdaten:

Dienstag 24. Februar 2009, 18:14

Code: Alles auswählen

class ConfigData:
    def __init__(self):
        outputdir = ''
        scriptsrc = ''
        sessionsrc = '' 
Probiers so mal...
ruebe
User
Beiträge: 3
Registriert: Dienstag 24. Februar 2009, 17:45

Dienstag 24. Februar 2009, 18:14

nvm ich bin der Python Formatierung zum Opfer gefallen ... tabs vs leerzeichen sozusagen, hab den Unterschied an der stelle somit nicht gesehen
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Mittwoch 25. Februar 2009, 10:33

Birne94 hat geschrieben:

Code: Alles auswählen

class ConfigData:
    def __init__(self):
        outputdir = ''
        scriptsrc = ''
        sessionsrc = '' 
Probiers so mal...
So sind das alles nur lokale Variablen. So geht es:

Code: Alles auswählen

class ConfigData:
    def __init__(self):
        self.outputdir = ''
        self.scriptsrc = ''
        self.sessionsrc = '' 
https://www.xing.com/go/invite/18513630.6a91d4
ruebe
User
Beiträge: 3
Registriert: Dienstag 24. Februar 2009, 17:45

Mittwoch 25. Februar 2009, 15:14

Danke, ihr hab absolut recht. Klärt auch einige andere Nebeneffekte die ich hatte ;-)
DasIch
User
Beiträge: 2452
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Mittwoch 25. Februar 2009, 15:32

Solltet ihr kein Python 3 benutzen, empfiehlt es sich vorallem New-Style Klassen zu benutzen.
Antworten