for schleife

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
Joe-Waschl
User
Beiträge: 20
Registriert: Freitag 12. November 2010, 20:18

hallo zusammen,
bräuchte bitte eure hilfe :oops:
habe leider ein kleines problem und finde den fehler nicht.
Ich habe mir ein programm geschrieben das den Namen und das dazugehörige Geburtsdatum
mit pickle speichert, doch beim anzeigen aller daten in der datei bekomme ich nur die erste zeile
dargestellt bzw die erste zeile senkrecht. :roll:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
Created on 12.11.2012

@author: user1
'''

import sys
import pickle


def suchen():
    eingabe = raw_input('Bitte Namen oder Geburtsdatum eingeben( NAMEN TT.MM.JJ): ')
    with open('geb_liste3.pkl', 'r') as datei:
        datei2 = pickle.load(datei)
        if eingabe in datei2:
            print eingabe, 'ist vorhanden'
        else:
            print 'nicht vorhanden'

def beenden():
    print 'beendet'
    sys.exit()

def alle_anzeigen():
    with open('geb_liste3.pkl', 'r') as datei:
        datei2 = pickle.load(datei)
        for zeile in datei2:
            print zeile
            
def hinzufuegen():
    eingabe = raw_input('Namen und Geburtsdatum eingeben(NAMEN TT.MM.JJ): ')
    with open('geb_liste3.pkl', 'a') as datei:
        pickle.dump(eingabe, datei)
        
    
menu = [
        ['Beenden', beenden],
        ['Alle anzeigen', alle_anzeigen],
        ['Hinzufügen', hinzufuegen],
        ['Suchen', suchen]
        ]

def handle_menu(menu):
    while True:
        for index, item in enumerate(menu, 0):
            print '%s %s' %(index, item[0])
        choice = int(raw_input('\nBitte zahl eingeben: '))
        if choice < len(menu):
            menu[choice][1]()
        else: 
            print 'eingabe nicht erkannt'
            
if __name__ == '__main__':
    handle_menu(menu)

Code: Alles auswählen

0 Beenden
1 Alle anzeigen
2 Hinzufügen
3 Suchen

Bitte zahl eingeben: 1
t
e
s
t
 
1
1
.
1
1
.
1
1
gruß Joe
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Für jeden dump-Aufruf musst du auch einen load-Aufruf machen.
Das Leben ist wie ein Tennisball.
BlackJack

@Joe-Waschl: So funktioniert das Pickle nicht. Beim Laden wird die Struktur geladen, die am Anfang in der Datei steht. Und das ist *eine* Zeichenkette. Was danach kommt ist Pickle egal. Du musst *alle* Daten speichern. Das heisst hinzufügen ist nicht anhängen an eine Datei, sondern laden der Daten, dort den neuen Eintrag hinzufügen, und dann alles wieder Speichern. Also zum Beispiel eine Liste mit Zeichenketten. Da kommt beim Laden dann auch wieder eine Liste mit Zeichenketten heraus.

Edit: Was EyDu sagt, könntest Du auch machen, aber mit dem Ansatz bekommst Du spätestens Probleme wenn Du Datensätze löschen möchtest.
Joe-Waschl
User
Beiträge: 20
Registriert: Freitag 12. November 2010, 20:18

ahh ok, dann werde ich alles in eine liste packen

danke für die schnelle antwort :)
Antworten