Hi,
ich versuche gerade ein mehrdim. Array zu speichern. Leider kann ich das scheinbar nicht einfach so in eine Datei schreiben, da dies mit listen nicht geht. Nun habe ich versucht diesen Array in ein str() umzuwandeln. Doch wenn ich den wieder aus der Datei auslese, weiß ich nicht wie ich diesen wieder in ein Array umgewandelt bekomme. Vielleicht kann mir ja jemand weiterhelfen, oder hat schon eine schnellere/einfache Lösung.
Mit freundlichem Gruß
Zack
speicherung v. mehrdim. Array
Hast du es mit dem pickle Modul versucht?
Wenn du es als csv speichern willst ist z.B. das CSV-Modul für dich sicherlich interessant:
Hier gibt es schon einen Thread zum Thema: http://www.python-forum.de/topic-11592.html
Code: Alles auswählen
from numpy import *
from csv import *
arr = zeros((5,5))
f = file("xyz.csv", 'w')
wr = writer(f)
wr.writerows(arr)
@BlackVivi:
ja hab ich auch schon:
Ich poste anbei nochmal das Array um das es geht, das mit 2 Einträgen gefüttert wurde.
Der 0te index jedes Eintrags(diese Super-Klammer) muss leider auch in diesem vollen umfang gespeichert werden, da diese im gesamten eine ID representiert die für das sched-Modul benötigt wird.
ja hab ich auch schon:
Code: Alles auswählen
file = open ("C://zustand.txt","w")
cPickle.dump(matrix,file)
file.close()
Code: Alles auswählen
File "C:\Python25\Lib\copy_reg.py", line 69, in _reduce_ex
raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle instancemethod objects
Code: Alles auswählen
[[(1188359999.984, 1, <bound method TimeStack._bootLoader of <time_conv4.TimeStack instance at 0x00D75D78>>, ('123', '20070829 06:00:00')), '20070829 06:00:00', '123', 'html-script'],
[(1188532799.8429999, 1, <bound method TimeStack._bootLoader of <time_conv4.TimeStack instance at 0x00D75D78>>, ('123', '20070831 06:00:00')), '20070831 06:00:00', '123', 'html-script']]
@tromai:
Ich hab so langsam das gefühl, dass es an den riesen Klammer-einträgen in meinem Array liegt. Denn auch die cPickle-Methode läuft reibungslos, wenn ich sie mit Normalen mehrdim. Arrays füttere. Erst bei der Klammer, in der ja nicht nur Strings oder Zahlen gespeichert sind, kommt es zu Fehlermeldungen. Ich versuche das jetzt nochmal mit der CVS-Methode, denke aber es kommt das gleiche bei raus.
Ich hab so langsam das gefühl, dass es an den riesen Klammer-einträgen in meinem Array liegt. Denn auch die cPickle-Methode läuft reibungslos, wenn ich sie mit Normalen mehrdim. Arrays füttere. Erst bei der Klammer, in der ja nicht nur Strings oder Zahlen gespeichert sind, kommt es zu Fehlermeldungen. Ich versuche das jetzt nochmal mit der CVS-Methode, denke aber es kommt das gleiche bei raus.
Hallo Zack!
Die von dir gezeigte Exception von Pickle sagt ja das es keine "instancemethod" pickeln kann.
D.h. matrix muss schon mit Instanzen gefüllt sein und darf nicht wie es bei dir zu sein scheint Methoden enthalten.
Vielleicht hast du nur vergessen die Methode ausführen und möchtest den Rückgabewert pickeln.
Die von dir gezeigte Exception von Pickle sagt ja das es keine "instancemethod" pickeln kann.
D.h. matrix muss schon mit Instanzen gefüllt sein und darf nicht wie es bei dir zu sein scheint Methoden enthalten.
Vielleicht hast du nur vergessen die Methode ausführen und möchtest den Rückgabewert pickeln.
Hi zap:
sched ist ein Modul mit dem man/frau Task zu bestimmten Zeitpunkten ausführen lassen kann. Nach so einem Eintrag eines Task, bekommt man als Rückgabe-wert diese Klammer die wie oben erwähnt als ID fungiert. Die speicher ich dann zusammen mit den anderen Informationen in mein Array, welches ich dann wiederum abspeichern wollte.
Ich denke ich werde Kapitulieren und diese Informationen einfach weglassen. Werden im endeffekt eh nicht benötigt, wie mir gerade klar wurde. Das heißt aber wiederum, dass ich das Array mühselig auseinander friemeln muss. Aber trotzdem wäre es ja interessant gewesen zu wissen, ob es möglich gewesen wäre.
Falls niemand mehr Ideen haben sollte, sag ich schon mal vielen Dank für eure Hilfe.
gruß zack
sched ist ein Modul mit dem man/frau Task zu bestimmten Zeitpunkten ausführen lassen kann. Nach so einem Eintrag eines Task, bekommt man als Rückgabe-wert diese Klammer die wie oben erwähnt als ID fungiert. Die speicher ich dann zusammen mit den anderen Informationen in mein Array, welches ich dann wiederum abspeichern wollte.
Ich denke ich werde Kapitulieren und diese Informationen einfach weglassen. Werden im endeffekt eh nicht benötigt, wie mir gerade klar wurde. Das heißt aber wiederum, dass ich das Array mühselig auseinander friemeln muss. Aber trotzdem wäre es ja interessant gewesen zu wissen, ob es möglich gewesen wäre.
Falls niemand mehr Ideen haben sollte, sag ich schon mal vielen Dank für eure Hilfe.
gruß zack