14c Regels toevoegen
Deze les gebruikt schrijven en lezen, uit Een tekstbestand schrijven en Een tekstbestand lezen.
Een logboek houd je elke dag bij. Wat er gisteren in stond, moet blijven
staan. Met "a" in plaats van "w" schrijft Python achter wat er al staat:
with open("logboek.txt", "w") as bestand:
bestand.write("maandag: 3 km gelopen\n")
with open("logboek.txt", "a") as bestand:
bestand.write("dinsdag: 5 km gelopen\n")
with open("logboek.txt") as bestand:
for regel in bestand:
print(regel.strip())
Uitvoer:
maandag: 3 km gelopen
dinsdag: 5 km gelopen
De "a" staat voor append, toevoegen. Net als .append() bij een lijst
komt het nieuwe achteraan. Bestaat het bestand nog niet, dan maakt "a" het
aan, net als "w".
In een functie
Voeg je vaak een regel toe, dan zet je dat in een functie. Elke aanroep opent het bestand, schrijft één regel en sluit het weer:
def noteer(tekst):
with open("training.txt", "a") as bestand:
bestand.write(f"{tekst}\n")
noteer("woensdag: 4 km gelopen")
noteer("donderdag: rustdag")
with open("training.txt") as bestand:
print(bestand.read())
Uitvoer:
woensdag: 4 km gelopen
donderdag: rustdag
Druk hieronder twee keer op Uitvoeren. De tweede keer staan er vier regels in
training.txt: het bestand bestaat nog van de eerste keer, en er komen er
twee bij.
def noteer(tekst):
with open("training.txt", "a") as bestand:
bestand.write(f"{tekst}\n")
noteer("woensdag: 4 km gelopen")
noteer("donderdag: rustdag")
with open("training.txt") as bestand:
print(bestand.read())Er gaat iets mis
Toevoegen met "w"
def noteer(tekst):
with open("logboek.txt", "w") as bestand:
bestand.write(f"{tekst}\n")
noteer("woensdag: 4 km gelopen")
noteer("donderdag: rustdag")
with open("logboek.txt") as bestand:
print(bestand.read())
Uitvoer:
donderdag: rustdag
Geen foutmelding, maar woensdag is weg. Elke open met "w" begint met een
leeg bestand, dus de tweede aanroep gooit de eerste regel weg. Om iets toe te
voegen gebruik je "a".
Opdracht 14c.1: Nog meer boodschappen
De startcode maakt een boodschappenlijst. Voeg eieren en tomaten toe,
zonder de regel die het bestand maakt te veranderen.
Verwachte uitvoer:
melk
brood
eieren
tomaten
with open("boodschappen.txt", "w") as bestand:
bestand.write("melk\nbrood\n")
# Schrijf hier je code
with open("boodschappen.txt") as bestand:
print(bestand.read())Klik hier voor een tip.
Open het bestand een tweede keer, nu met "a", en schrijf daar de twee
nieuwe regels.
Klik hier voor de oplossing.
with open("boodschappen.txt", "w") as bestand:
bestand.write("melk\nbrood\n")
with open("boodschappen.txt", "a") as bestand:
bestand.write("eieren\n")
bestand.write("tomaten\n")
with open("boodschappen.txt") as bestand:
print(bestand.read())
Uitvoer:
melk
brood
eieren
tomaten
Opdracht 14c.2: Scores bijhouden
Schrijf de functie bewaar_score(naam, punten). Die voegt een regel als
Sara: 120 toe aan scores.txt. De startcode maakt eerst een leeg bestand,
zodat je bij elke keer Uitvoeren opnieuw begint. Daarna roept hij de functie
drie keer aan en print hij het bestand.
Verwachte uitvoer:
Sara: 120
Alex: 95
Noor: 150
with open("scores.txt", "w") as bestand:
bestand.write("")
def bewaar_score(naam, punten):
print(f"Nog te doen: {naam}")
bewaar_score("Sara", 120)
bewaar_score("Alex", 95)
bewaar_score("Noor", 150)
with open("scores.txt") as bestand:
print(bestand.read())Klik hier voor een tip.
Kijk naar de functie noteer hierboven. Het verschil zit in de f-string:
daar komen nu twee waarden in.
Klik hier voor de oplossing.
with open("scores.txt", "w") as bestand:
bestand.write("")
def bewaar_score(naam, punten):
with open("scores.txt", "a") as bestand:
bestand.write(f"{naam}: {punten}\n")
bewaar_score("Sara", 120)
bewaar_score("Alex", 95)
bewaar_score("Noor", 150)
with open("scores.txt") as bestand:
print(bestand.read())
Uitvoer:
Sara: 120
Alex: 95
Noor: 150