Articles

GeeksforGeeks

Voorvereisten:

  • Toegangsmodi
  • Open een bestand
  • Sluit een bestand

Python biedt ingebouwde functies voor het maken, schrijven en lezen van bestanden. Er zijn twee soorten bestanden die in python kunnen worden afgehandeld, normale tekstbestanden en binaire bestanden (geschreven in binaire taal, 0’s en 1’s). In dit artikel gaan we het lezen van regel voor regel uit een bestand bestuderen.

Regel voor regel lezen

Het gebruik van readlines()

readlines() wordt gebruikt om alle regels in een keer te lezen en ze dan terug te geven als elke regel een string element in een lijst. Deze functie kan worden gebruikt voor kleine bestanden, omdat het de hele inhoud van het bestand in het geheugen leest, en het dan splitst in afzonderlijke regels. We kunnen de lijst itereren en het teken voor de nieuwe regel verwijderen met de functie strip().

Voorbeeld:

Python3

L

=

file1 =open(

, 'w')

file1.writelines(L)
file1.close()
file1

=open('myfile.txt', 'r')

Lines =file1.readlines()
count =0

forline inLines:

count +=1

print("Line{}: {}".format(count, line.strip()))



Uitvoer:

Line1: GeeksLine2: forLine3: Geeks

Gebruik van readline()

readline() functie leest een regel van het bestand en geeft deze terug in de vorm van een string. Het neemt een parameter n, die het maximum aantal bytes dat zal worden gelezen specificeert. Er wordt echter niet meer dan één regel gelezen, zelfs als n de lengte van de regel overschrijdt. Het zal efficiënt zijn bij het lezen van een groot bestand, omdat in plaats van alle gegevens in een keer op te halen, het regel voor regel ophaalt. readline() geeft de volgende regel van het bestand terug die een newline karakter bevat op het einde. En als het einde van het bestand is bereikt, geeft het een lege string terug.

Voorbeeld:

Python3

L =

file1 =open('myfile.txt', 'w')

file1.writelines((L))
file1.close()
file1 =open('myfile.txt', 'r')

count =0

whileTrue:

count +=1

line =file1.readline()

ifnotline:
break

print("Line{}: {}".format(count, line.strip()))

file1.close()



Uitvoer:

Line1 GeeksLine2 forLine3 Geeks

Gebruik van for-lus

Een iterable object wordt teruggegeven door open() functie bij het openen van een bestand. Deze laatste manier om een bestand regel-voor-regel in te lezen omvat het itereren over een bestandsobject in een for-lus. Door dit te doen maken we gebruik van een ingebouwde Python functie die ons toestaat om impliciet te itereren over het bestandsobject door gebruik te maken van een for-lus in combinatie met het gebruik van het iterable object. Deze aanpak neemt minder regels code in beslag, wat altijd de beste praktijk is om te volgen.

Voorbeeld:

Python3

L =
file1 =open('myfile.txt', 'w')
file1.writelines(L)
file1.close()
file1 =open('myfile.txt', 'r')

count =0

print("Using for loop")

forline infile1:

count +=1

print("Line{}: {}".format(count, line.strip()))

file1.close()



Uitvoer:

Using for loopLine1: GeeksLine2: forLine3: Geeks

Met statement

In de bovenstaande benaderingen moet het bestand, telkens als het wordt geopend, expliciet worden gesloten. Als men vergeet het bestand te sluiten, kan dat tot bugs in de code leiden. Veel wijzigingen in bestanden worden pas van kracht als het bestand goed gesloten is. Om dit te voorkomen kan het With statement gebruikt worden. Het With statement in Python wordt gebruikt in exception handling om de code schoner en veel leesbaarder te maken. Het vereenvoudigt het beheer van gemeenschappelijke bronnen zoals bestandsstromen. Zie het volgende code voorbeeld hoe het gebruik van het with statement de code schoner maakt. Het is niet nodig om file.close() aan te roepen wanneer je het with the statement gebruikt. Het with the statement zelf zorgt voor een correcte verwerving en vrijgave van bronnen.

Voorbeeld:

Python3

L =
with open("myfile.txt", "w") as fp:
fp.writelines(L)
count =0
print("Using readlines()")

with open("myfile.txt") as fp:

Lines =fp.readlines()
forline inLines:
count +=1
print("Line{}: {}".format(count, line.strip()))
count =0
print("\nUsing readline()")
with open("myfile.txt") as fp:
whileTrue:

count +=1

line =fp.readline()
ifnotline:
break
print("Line{}: {}".format(count, line.strip()))
count =0
print("\nUsing for loop")
with open("myfile.txt") as fp:
forline infp:
count +=1
print("Line{}: {}".format(count, line.strip()))



Output:

Using readlines()Line1: GeeksLine2: forLine3: GeeksUsing readline()Line1: GeeksLine2: forLine3: GeeksUsing for loopLine1: GeeksLine2: forLine3: Geeks

Laat een antwoord achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *