i

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.

Suche

v
6.3.1.4.3.3
dev.inf-schule.de/imperative-programmierung/python/projekte/datenstrukturen/ehemalige/adresslistesichern
dev.inf-schule.de/6.3.1.4.3.3

Rückmeldung geben