Ich könnte jetzt so weitermachen, der Rest der Methoden wäre schnell geschrieben. Ich wollte es aber hier dennoch nochmal zeigen, es geht mir vor allem um die Verwendung der "zeiger" Variable in der Klasse - ob man das so machen kann (klar kann man, funktioniert ja
Der Sinn der "gebe_naechsten_Datensatz" -Methode ist den nächsten Datensatz zurückzugeben, damit dieser bearbeitet oder ausgegeben werden kann. Zurückgegeben werden sollen aber nur Datensätze bei denen in Spalte 13 ein "x" steht - später soll bei Datensätzen die Beisielsweise ein bestimmtes (Such)Wort nicht enthalten das "x" duch "n" ersetzt werden, damit diese Datensätze nicht zurückgegeben werden.
self.zeiger zeigt immer auf den aktuellen Datensatz
self.maxzeiger ist die höchstmögliche zeigerposition (maxzeiger ändert sich natülich wenn Datensätze angefügt oder gelöscht werden, darum arbeite ich da in der Methode nicht mit len(tabelle).
Code: Alles auswählen
#!/usr/bin/env python3
# -*- coding: utf - 8 *-
import pickle
class Tabelle():
def __init__ (self, tabelle):
self.tabelle = tabelle
self.zeiger = -1
self.maxzeiger = len(self.tabelle)
def gebe_naechsten_Datensatz(self):
if self.zeiger == self.maxzeiger:
return self.tabelle[self.zeiger][:]
self.zeiger +=1
if self.tabelle[self.zeiger][13] != "x":
gebe_naechsten_Datensatz()
else:
return self.tabelle[self.zeiger][:]
def gebe_vorherigen_Datensatz(self):
pass
# Hauptprogramm
# lade Tabelle
dateiname = "videos.dmp"
with open(dateiname, "rb") as inhalt:
tabelle = pickle.load(inhalt)
# erzeuge eine Instanz der Klasse Tabelle
tabelle = Tabelle(tabelle)
a = True
while a:
satz = tabelle.gebe_naechsten_Datensatz()
print (satz[0]+satz[13]) # Test-Ausgabe zu Kontrollzwecken
if input ("Weiter ?") != "":
a = False
Thomas
