Abspeichern in ein Modul

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.
Benutzeravatar
snafu
User
Beiträge: 5631
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Montag 29. Dezember 2008, 13:55

Auch auf die Gefahr hin, dass wir aneinander vorbeireden, mit Shelve würde man das so machen:

Code: Alles auswählen

>>> import shelve
>>> name = raw_input('Gib deinen Namen ein: ')
Gib deinen Namen ein: Sebastian
>>> age = raw_input('Gib dein Alter ein: ')
Gib dein Alter ein: 25
>>> slv = shelve.open('data.slv')
>>> slv['name'] = name
>>> slv['age'] = age
>>> slv.close()
Und wenn dein Kollege es später wieder auslesen will...

Code: Alles auswählen

>>> slv = shelve.open('data.slv')
>>> print slv['name']
Sebastian
>>> print slv['age']
25
shcol (Repo | Doc | PyPi)
Boldi
User
Beiträge: 32
Registriert: Montag 29. Dezember 2008, 11:02
Wohnort: Erfurt
Kontaktdaten:

Montag 29. Dezember 2008, 14:15

Leonidas hat geschrieben:Oh graus, die Idee direkt im Programm in Quelltextdateien zu schreiben ist so fürchterlich, das wäre ich mir auch als Anfänger wohl nie im Leben eingefallen. Das ist definitiv die schlechteste Idee die ich diesen Monat hier im Forum gesehen habe. :shock: Und euer Informatiklehrer hat euch das so gesagt? :evil:

Zum Speichern von Daten gibt es Datenbanken oder spezielle Formate zum Speichern von Daten wie XML, Pickle, JSON, etc.

Übrigens: In Python 2.x solltest du _immer_ ``raw_input`` nutzen und das ``w`` steht für ``write`` und das musst du nicht ändern, wenn du in eine Datei speichern willst.
Das hat mir niemand gesagt, dass ist alles auf meinem Mist gewachsen :wink: Natrlich könnten wir auch Datenbanken nutzen, allerdings lohnt sich der Aufwand nicht. Es so zu machen wie es mir von snafu und lunar erklärt wurde reicht vollkommen aus.

Thread kann geschlossen werden. Mein Versuch funktioniert dank alles die mir Tipps gegeben haben fehlerfrei.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 29. Dezember 2008, 14:22

Mit pickle wäre das noch einfacher und trotzdem sauber.

Code: Alles auswählen

import pickle
daten = [['haus', 'hase'], [1, 2, 3, 4]]
fobj = open('save.dat', 'w')
pickle.dump(daten, fobj)
fobj.close()
Laden geht übrigens ebenso einfach. Shelve wurde auch bereits erwähnt, das ebenso eine bessere Lösung als Module schreiben ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Montag 29. Dezember 2008, 14:25

Ich hatte mal nen PHP-Script, das nen Template für nen Python Modul war :D
Boldi
User
Beiträge: 32
Registriert: Montag 29. Dezember 2008, 11:02
Wohnort: Erfurt
Kontaktdaten:

Montag 29. Dezember 2008, 18:50

snafu hat geschrieben:Auch auf die Gefahr hin, dass wir aneinander vorbeireden, mit Shelve würde man das so machen:

Code: Alles auswählen

>>> import shelve
>>> name = raw_input('Gib deinen Namen ein: ')
Gib deinen Namen ein: Sebastian
>>> age = raw_input('Gib dein Alter ein: ')
Gib dein Alter ein: 25
>>> slv = shelve.open('data.slv')
>>> slv['name'] = name
>>> slv['age'] = age
>>> slv.close()
Und wenn dein Kollege es später wieder auslesen will...

Code: Alles auswählen

>>> slv = shelve.open('data.slv')
>>> print slv['name']
Sebastian
>>> print slv['age']
25
Ich glaub wir haben wirklich aneinander vorbeigeredet :wink: aber das war wenn mein Fehler.
Danke für deine Hilfe, ich glaube diese Version ist sogar noch besser als die erste.
DasIch
User
Beiträge: 2478
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Montag 29. Dezember 2008, 19:01

JSON ftw.

Code: Alles auswählen

In [1]: import json

In [2]: with open('foo.json', 'w') as stream:
   ...:     json.dump({'foo': 'bar'}, stream)

In [3]: with open('foo.json') as stream:
   ...:     print json.load(stream)
             
{u'foo': u'bar'}
:)
Antworten