Eine Adressliste sichern
Zielsetzung
Wenn man E-Mail-Adressen mit einer Liste verwaltet, dann erfolgt die Datenhaltung nur solange das Programmiersystem aktiv ist. Für eine längerfristige Datenhaltung müssen die Daten in einer externen Datei gespeichert werden. Um beides nutzen zu können - längerfristige Sicherung der Daten in einer Datei und flexible Datenhaltung und -verarbeitung mit Listen - benötigt man Funktionen, die das Speichern und Laden von Daten sowie das Umwandeln von Listen und Texten ermöglichen. Ziel ist es, die hierzu erforderlichen Bausteine zu erkunden und zu nutzen.
Bausteine benutzen
Funktionen zur Listenverarbeitung muss man nicht immer selbst konzipieren und definieren. Oft kann man auf bereits existierende Funktionsdefinitionen zurückgreifen. Wenn die Funktionsdefinitionen hinreichend dokumentiert sind, dann kann man die Funktionen als fertigen Baustein benutzen.
Der folgende Python-Quelltext liefert die zur externen Datenhaltung benötigten Bausteine.
def textAusStringListe(liste):
"""
erzeugt aus einer Liste mit Strings einen String,
der alle Strings der Liste enthält, getrennt durch
das Zeilenumbruchzeichen
Bsp.:
>>> textAusStringListe(['Tamara', 'Peter', 'Bello'])
'Tamara\nPeter\nBello'
"""
text = ''
if len(liste) > 0:
text = text + liste[0]
for element in liste[1:]:
text = text + '\n' + element
return text
def stringListeAusText(text):
"""
erzeugt aus einem String mit Zeilenumbruchzeichen
eine Liste mit Strings zu den einzelnen Zeilen
Bsp.:
>>> stringListeAusText('Tamara\nPeter\nBello')
['Tamara', 'Peter', 'Bello']
>>> stringListeAusText('Text\nmit\n\nmehreren\nZeilen')
['Text', 'mit', '', 'mehreren', 'Zeilen']
"""
liste = text.split('\n')
return liste
def textAusDatei(dateiname):
"""
lädt einen Text aus einer Datei und gibt sie als
Zeichenkette zurück
beachte: setzt die Codierung iso-8859-1 voraus
"""
datei = open(dateiname, 'r', encoding='iso-8859-1')
text = datei.read()
datei.close()
return text
def textInDateiSpeichern(dateiname, text):
"""
speichert eine Zeichenkette in einer Datei
beachte: benutzt die Codierung iso-8859-1
"""
datei = open(dateiname, 'w', encoding='iso-8859-1')
datei.write(text)
datei.close()
Verwenden kann man diese Bausteine z.B. so:
from listenoperationen_zum_laden_und_speichern import *
# Test
listeAdressen = [
'amueller@gmx.de',
'carla2@hotmail.org',
'herbert.fluhr@web.de',
'petra@dahm.de',
'ewen@t-online.de',
't_schmidt@web.de',
'nicole.weber@gmx.de'
]
text = textAusStringListe(listeAdressen)
textInDateiSpeichern('emailadressen.txt', text)
Aufgabe 1
Speichere die Bausteine zum Laden und Speichern in einer Datei mit dem Dateinamen
listenoperationen_zum_laden_und_speichern.py
ab.
Führe anschließend das Testprogramm aus. Beachte, dass das Testprogramm im selben Verzeichnis
gespeicht wird wie das Programm mit den Funktionsdefinitionen.
Teste analog das Laden der Daten aus einer Datei.