Bestandsafhandeling in Python

Als je naar de achtergrond van je bureaublad kijkt, wat merk je dan? Bestanden overal verspreid, toch? Ik weet dat we regelmatig in deze slechte gewoonte vervallen om een ​​rommelige desktop te hebben, maar het punt hier is dat we veel met bestanden lijken om te gaan.

Over Python gesproken, het is zeker mogelijk om met bestanden te werken met Python, en dit is wat ik je in deze tutorial zal laten zien.

Een bestand openen

Het eerste natuurlijke proces dat we moeten uitvoeren om een ​​bewerking in een bestand uit te voeren, is Open het. Ga je gang en download Text.txt, het bestand dat we zullen gebruiken om onze experimenten uit te voeren.

Om het bestand met Python te openen, gebruiken we de functie open (). Zoals vermeld in de documentatie:

open () retourneert een bestandsobject en wordt meestal gebruikt met twee argumenten: open (bestandsnaam, modus)

Alvorens een voorbeeld te nemen, zoals hierboven vermeld, de Open() functie zal twee argumenten aannemen: bestandsnaam en mode. Deze manier om argumenten in te stellen is eigenlijk vergelijkbaar stdio's (dat wil zeggen C) fopen ()Bestandsnaam is gewoon de naam van het bestand dat u wilt openen. U kunt ook het pad naar dat bestand opgeven als dit zich niet in uw huidige map bevindt. En mode is een tekenreekswaarde die aangeeft hoe het bestand wordt geopend. Voorbeelden van verschillende modi worden getoond in de volgende tabel:

mode Omschrijving
r Open tekstbestand om te lezen. De stream bevindt zich aan het begin van het bestand
r+ Open voor lezen en schrijven. De stream bevindt zich aan het begin van het bestand
w Afkorten tot nul lengte of maak een tekstbestand om te schrijven. De stream bevindt zich aan het begin van het bestand
w+ Open voor lezen en schrijven. Het bestand wordt gemaakt als het niet bestaat, anders wordt het afgekapt. De stream bevindt zich aan het begin van het bestand
een Open voor schrijven. Het bestand wordt gemaakt als het niet bestaat. De stream bevindt zich aan het einde van het bestand. Latere schrijfbewerkingen naar het bestand eindigen altijd aan het huidige einde van het bestand
een+ Open voor lezen en schrijven. Het bestand wordt gemaakt als het niet bestaat. De stream bevindt zich aan het einde van het bestand. Latere schrijfbewerkingen naar het bestand eindigen altijd aan het huidige einde van het bestand

U kunt ook andere modi zien in de documentatie van Python.

Laten we doorgaan en het bestand Text.txt openen. Dit kan eenvoudig als volgt in één regel worden gedaan:

text_file = open ('Text.txt')

Zoals u hier kunt zien, hebben we het mode. De standaardmodus kennen die wordt gebruikt met Open(), type print text_file, in welk geval krijg je het volgende:


Dus, zoals je kunt zien, is de standaardmodus r. Op dit punt merkt u mogelijk niets op, maar het openen van het bestand is in deze stap gelukt.

Een bestand lezen

Het bestand is als een geheim kader. We hebben het in de vorige stap geopend en nu willen we zien wat erin zit. Het lezen van een bestand is eenvoudig in Python en kan worden bereikt met behulp van de lezen() methode, als volgt:

text_file.read ()

Typ het volgende als u de uitvoer van de vorige instructie wilt zien print text_file.read (). In dit geval wordt het geheim (inhoud) onthuld!

Ik geniet van het leren over "file handling" in Python

Ga je gang, en typ print text_file.read () nogmaals, en wat merk je op? U kunt dat zien als een leeg string is uitgevoerd. Dit komt omdat je het hele bestand al hebt gelezen, in tegenstelling tot het lezen van één regel tegelijk, d.w.z.. Lees regel().

Naar een bestand schrijven

Misschien wil je een andere zin of paragraaf toevoegen (schrijven) aan het bestand dat we al hebben gelezen. Stel dat je de volgende zin wilde toevoegen: en ik ben op zoek naar meer. Dit kan gedaan worden in Python met behulp van de schrijven() methode, als volgt:

text_file.write ('en ik ben op zoek naar meer')

Oeps, we hebben hier een fout:

Traceback (meest recente oproep laatste): bestand 'test.py', regel 2, in  text_file.write ('en ik ben op zoek naar meer') IOError: bestand niet geopend om te schrijven

Heb je het al begrepen? Onthoud dat we het bestand in het eerste gedeelte als volgt hebben geopend: geopend ( 'text.txt')? Aangezien we niet hebben opgegeven een mode in dat voorbeeld was de modus (standaard) ingesteld op r. Dit zal ons alleen toestaan ​​om lezen het bestand, en in dit voorbeeld proberen we het schrijven naar het bestand. Laten we het bestand dus opnieuw openen, maar dan met het schrijven w modus:

text_file = open ('Text.txt', 'w')

Probeer nu de zin opnieuw te schrijven met de bovenstaande code. Wat heb je gekregen? Laten we Open() en afdrukken lezen() het bestand zoals getoond in de eerste twee secties om te zien wat er in het bestand zit:

text_file = open ('Text.txt', 'r') print text_file.read ()

De uitvoer van dit script is:

en ik ben op zoek naar meer

Je verwachtte deze nieuwe zin vergezeld te zien van de originele zin Ik geniet van het leren over "file handling" in Python, Was jij niet? Dus waar is het gebleven? De w modus lijkt de inhoud van het bestand waarnaar wordt geschreven te overschrijven. Als u geïnteresseerd bent in het bewaren van de originele tekst van het document, kunt u de een (toevoegen) modus:

text_file = open ('Text.txt', 'a') text_file.write ('en ik ben op zoek naar meer')

In dit geval moet u de verwachte inhoud ophalen text.txt:

Ik geniet van het leren over "file handling" in Python en ik ben op zoek naar meer

Laten we alles wat we tot nu toe samen hebben geleerd plaatsen:

met open ('Text.txt', 'r +') als text_file: print 'De bestandsinhoud VOORDAT u inhoud schrijft:' print text_file.read () text_file.write ('en ik ben op zoek naar meer') print 'The bestandsinhoud NA het schrijven van inhoud: 'text_file.seek (0) print text_file.read ()

We hebben wat nieuwe dingen hier. Laat me ze snel verduidelijken. met als staat ons toe om het bestand te openen, het te verwerken en ervoor te zorgen dat het gesloten is. zoeken(), aan de andere kant, staat ons toe om de aanwijzer (dat wil zeggen de cursor) naar een ander deel van het bestand te verplaatsen. seek (0), betekent bijvoorbeeld dat het referentiepunt het begin van het bestand is.

Ga je gang en voer het script uit, en kijk wat je krijgt als uitvoer.

Een bestand sluiten

Als je de gewoonte hebt om na het lezen of schrijven een bestand te sluiten, kun je geheugen vrijmaken. Ja, Python sluit de bestanden automatisch nadat het script is voltooid, maar als u dat niet van tevoren doet, nemen open bestanden enige ruimte in waar Python baat bij zou kunnen hebben. Het sluiten van een bestand wordt eenvoudig uitgevoerd met behulp van de dichtbij() methode.

Laten we dit voorbeeld nemen:

text_file = open ('Text.txt', 'a +') print text_file.read () text_file.write ('en ik ben op zoek naar meer')

Wat gebeurt er als we het bestand daarna sluiten? lezen()? Dat is, text_file.close (). Python geeft de volgende uitzondering:

Traceback (meest recente oproep laatste): bestand 'test.py', regel 4, in  text_file.write ('en ik ben op zoek naar meer') ValueError: I / O-bewerking op gesloten bestand

Dus concluderen we dat we kan niet lezen van of schrijven naar een gesloten bestand.

Conclusie

Dat is het voor deze tutorial. We hebben gezien hoe eenvoudig Python met bestanden werkt via enkele basishandelingen die we hebben gedemonstreerd. 

Welke andere bewerkingen voer je meestal uit in bestanden die Python gebruiken??