ich habe ein Problem, das mich ziemlich nervt. Ich lade (pickle) aus einer Datei eine Liste mit dem Bezeichner 'charts'. Mittels *print(charts)* wird mir der Inhalt auch angezeigt. Wenn ich dann im Auswahlmenu 'a' für *(A)nzeige der Chartliste* eingebe, ist diese Liste 'charts' auf einmal leer *print(charts)* => [].
Ich hänge euch mal das Skript an, mit der Bitte, nur 'a' in die Auswahlliste einzugeben, beim Rest gibt's Fehler, da ich die ganze Zeit am Probieren bin, und nicht wieder alles "zurechtgezogen" habe. Ich weiß auch, dass einiges an Code deswegen unnötig ist.
Was mache ich falsch. Ich wollte euch später sowieso noch Fragen über den Programmierstil stellen, ihr könnt aber trotzdem jetzt schon darauf eingehen, da ich mir nichts Falsches angewöhnen möchte.
Code: Alles auswählen
##!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Autor: Perlchamp
# Datum: 20.02.2019
# Dateiname: chartsmanager.py
# Zweck/Inhalt: Verwalten einer Chartliste
#TO DO
"""
Stimmabgabe
"""
#IMPORT
import pickle
#FUNKTIONDEFINITIONEN
def auswahl_treffen(charts) :
import pickle
print("-" * 30)
print("MENUE".center(30))
print("-" * 30)
print("(A)nzeige der Chartliste")
print("(C)hartliste erweitern")
print("(L)öschen von Einträgen in der Chartliste")
print("(M)odifizieren von Einträgen in der Chartliste")
print("(E)nde")
print("-" * 30)
print()
while True :
auswahl = input("Treffe deine Auswahl : ")
if auswahl not in "eE" :
if auswahl in "aA" :
charts_laden(charts)
charts_anzeigen(charts)
elif auswahl in "cC" :
charts_laden()
charts_eingeben()
auswahl_treffen()
elif auswahl in "lL" :
charts_laden()
charts_loeschen()
auswahl_treffen()
elif auswahl in "mM" :
charts_laden()
charts_modifizieren()
auswahl_treffen()
else :
continue
else :
charts_beenden()
break
def charts_laden(charts) :
try :
with open("data/charts.dmp", "rb") as f :
charts = pickle.load(f)
## print("dummy : ", dummy)
## charts = dummy[:]
print("charts : ", charts)
## print(charts)
return charts
except :
print("leere Liste !")
charts = [] # charts.dmp ist leer oder nicht vorhanden
## return charts
def charts_loeschen() :
delete = " "
while delete :
print("Löschen")
charts_anzeigen()
print()
delete = input("Gebe die Platznummer des zu löschenden Eintrag ein : ")
## print(charts)
if delete :
del charts[int(delete) - 1]
charts_speichern()
## else :
## charts_anzeigen(charts)
def charts_eingeben() :
print("Abbrechen der Eingaben mit Enter (=> keine Eingabe eines Titels) !")
interpret = " "
while interpret :
interpret = ""
titel = input("Titel : ")
while titel :
interpret = input("Interpret : ")
if interpret :
charts += [[0, titel, interpret]]
## print(charts)
titel = ""
print()
if len(charts) > 0 :
print("Vielen Dank. Die Liste wird gespeichert !")
charts_speichern()
else :
print("In die Liste wurde nichts eingetragen !")
def charts_speichern() :
try :
with open("data/charts.dmp", "wb") as f :
pickle.dump(charts, f)
except :
print("Die Liste konnte nicht gespeichert werden")
with open("data/charts.txt", "w") as backup :
backup.write(charts)
def charts_anzeigen(charts) :
print("-" *30)
print("Die Chartliste".center(30))
print("-" *30)
## print("len_charts : ", len(charts))
print("charts : ", charts)
if len(charts) > 0 :
## print("charts : ", charts)
for i in range(len(charts)) :
eintrag = charts[i]
print("Platz", i+1, ": ", eintrag[1], "\t von : ", eintrag[2], "\t\tStimmen : ".rjust(30), eintrag[0])
## auswahl_treffen(charts)
## else :
## auswahl_treffen(charts)
def charts_beenden() :
print ("Programm schliessen mit <Enter>")
input() # funktioniert nicht immer !
def main() :
auswahl_treffen(charts)
#KONFIGURATION
charts = []
#ANWEISUNGEN
if __name__ == "__main__" :
main()
#ENDE
##if(__name__ == "__main__"):
## print ("Programm schliessen mit <Enter>")
## input()