Werken met bestanden

Op deze pagina:

Python kent twee soorten bestanden: tekstbestanden en binaries. Tekstbestanden kan je per regel lezen en schrijven, binaries per byte.

Een bestand openen

Een bestand openen wijst deze toe aan een variabele die het file object gaat bevatten: variabele = open("bestandsnaam", "mode")

De bestandsnaam mag voorafgegaan worden door een bestandspad.

Met "mode" wordt aan gegeven op welke manier het bestand gebruikt wordt:

ModeGebruik
ralleen lezen (dit is de default als 'mode' wordt weggelaten bij het openen van een bestand)
wschrijven, reeds bestaande inhoud wordt hiermee gewist
atoevoegen (append), bestaande inhoud wordt bewaard en nieuw inhoud wordt toegevoegd aan het einde van het bestand
r+zowel lezen als schrijven

Een tekstbestand maken

De combinatie "\n" wordt gebruikt om een nieuwe regel aan te geven:


bestand = open("testbestand.txt","w") 
 
bestand.write("Hallo Wereld.\n") 
bestand.write("Dit is een tweede regel.\n") 
bestand.write("Dit is nog een regel.\n") 
bestand.write("Dit is de laatste regel.\n") 
 
bestand.close()

In plaats van elke regel apart, kan je ook meerdere regels tegelijk wegschrijven:


bestand = open("testbestand.txt","w")

regels=("Hallo Wereld.\n","Dit is een tweede regel.\n","Dit is nog een regel.\n","Dit is de laatste regel.\n")
bestand.writelines(regels)

bestand.close()

Een bestand geheel lezen

Het hele bestand in een keer lezen kan met read:


bestand = open("testbestand.txt", "r") 
print(bestand.read()) 

Uitvoer:


Hallo Wereld.
Dit is een tweede regel.
Dit is nog een regel.
Dit is de laatste regel.

Een aantal letters uit het bestand lezen


bestand = open("testbestand.txt", "r")
print(bestand.read(5))

Uitvoer:


Hallo

Een regel uit een bestand lezen


bestand = open("testbestand.txt", "r") 
print(bestand.readline()) 

Uitvoer:


Hallo Wereld.

Alle regels uit een bestand lezen

Methode 1:


bestand = open("testbestand.txt", "r") 
print(bestand.readlines())

Uitvoer:


['Hallo Wereld.\n', 'Dit is een tweede regel.\n', 'Dit is nog een regel.\n', 'Dit is de laatste regel.\n']

Methode 2:


bestand = open("testbestand.txt", "r") 
for regel in bestand: 
    print (regel)

Uitvoer:


Hallo Wereld.

Dit is een tweede regel.

Dit is nog een regel.

Dit is de laatste regel.

Tekst aan een bestaand bestand toevoegen


bestand = open("testbestand.txt", "a")

bestand.write("Dit wordt toegevoegd\n") 
bestand.write("aan het einde van het bestand.\n")

bestand.close()

bestand = open("testbestand.txt", "r") 
print(bestand.read()) 

Uitvoer:


Hallo Wereld.
Dit is een tweede regel.
Dit is nog een regel.
Dit is de laatste regel.
Dit wordt toegevoegd
aan het einde van het bestand.

Een With blok gebruiken

Met een With blok hoef je geen close-statement te gebruiken, dat gebeurt automatisch na afloop van het With blok.


#toevoegen (append):
with open("testbestand.txt","a") as bestand:
    bestand.write("nog een regel erbij.\n")
    
#alleen lezen:
with open("testbestand.txt") as bestand: 
    for regel in bestand: 
        print(regel) 

Uitvoer:


Hallo Wereld.

Dit is een tweede regel.

Dit is nog een regel.

Dit is de laatste regel.

Dit wordt toegevoegd

aan het einde van het bestand.

nog een regel erbij.

Bestand splitsen op spaties


with open("testbestand.txt", "r") as bestand:
    data = bestand.readlines()
 
for regel in data:
    woorden = regel.split()
    print(woorden)

Uitvoer:


['Hallo', 'Wereld.']
['Dit', 'is', 'een', 'tweede', 'regel.']
['Dit', 'is', 'nog', 'een', 'regel.']
['Dit', 'is', 'de', 'laatste', 'regel.']
['Dit', 'wordt', 'toegevoegd']
['aan', 'het', 'einde', 'van', 'het', 'bestand.']
['nog', 'een', 'regel', 'erbij.']

Een leeg bestand aanmaken

Je kunt een leeg bestand aanmaken door een bestand te openen en meteen weer te sluiten.


# met append mode (als het bestand al bestaat, wordt het niet aangepast)
bestand = '/home/kees/test.txt'

open(bestand, 'a').close()
# of:
open(bestand, mode='a').close()
# met with:
with open(bestand, mode='a'): pass

# met write mode (als het bestand al bestaat, wordt het leeg gemaakt)
open(bestand, 'w').close()
# of:
open(bestand, mode='w').close()

# met een try except blok:
try:
    open(bestand, 'a').close()
except OSError:
    print('Aanmaken bestand mislukt')
else:
    print('Bestand aangemaakt')

 

Verwante artikelen