Werken met Verschillende Bestandsmodi
Veeg om het menu te tonen
Leer hoe je verschillende bestandsmodi in Python gebruikt voor het lezen, schrijven en toevoegen van bestanden met praktische voorbeelden.
Python-bestandsmodi omvatten: 'r' voor lezen, 'w' voor schrijven (maakt aan/overschrijft), 'a' voor toevoegen (maakt aan indien ontbrekend), 'b' voor binaire modus, en '+' voor lezen/schrijven. Kies de juiste modus om dataverlies te voorkomen.
Leesmodus
De leesmodus ('r') opent een bestaand bestand alleen voor lezen. Je kunt het bestand niet schrijven of wijzigen in deze modus. Als het bestand niet bestaat, geeft Python een FileNotFoundError. Gebruik deze modus wanneer je gegevens uit een bestand wilt ophalen en lezen zonder de inhoud te wijzigen.
123456with open("sample.txt", "w") as f: f.write("This is a sample file.\nSecond line.") with open("sample.txt", "r") as f: content = f.read() print(content)
Deze code maakt een tekstbestand aan met voorbeeldinhoud en leest vervolgens de inhoud uit het bestand en drukt deze af.
Schrijfmodus
De schrijfmodus (w) in Python opent een bestand om te schrijven. Gebruik de w-modus wanneer je een nieuw bestand wilt aanmaken of een bestaand bestand wilt leegmaken om de inhoud te vervangen. Let op: alle bestaande gegevens in het bestand gaan verloren wanneer je het opent met de w-modus.
1234567891011with open("write_example.txt", "w") as file: file.write("This file was created or overwritten using write mode.\n") with open("write_example.txt", "r") as file: print(file.read()) with open("write_example.txt", "w") as file: file.write("Every time you run this code, the contents are replaced.\n") with open("write_example.txt", "r") as file: print(file.read())
Deze code toont de inhoud van het bestand na de eerste schrijfactie en vervolgens na het overschrijven, zodat je kunt zien hoe eerdere gegevens worden gewist en vervangen door nieuwe inhoud.
Toevoegmodus
Toevoegmodus, gespecificeerd door de bestandsmodus 'a', opent een bestand om te schrijven door nieuwe inhoud aan het einde van het bestand toe te voegen. Als het bestand niet bestaat, wordt het automatisch aangemaakt. Deze modus is handig wanneer je bestaande gegevens wilt behouden en eenvoudig meer informatie aan het einde wilt toevoegen, zoals het loggen van nieuwe vermeldingen of het bijwerken van records in de loop van de tijd. In tegenstelling tot schrijfmogus ('w'), verwijdert of overschrijft toevoegmodus nooit bestaande inhoud.
123456789with open("append_example.txt", "w") as f: f.write("Original line\n") with open("append_example.txt", "a") as f: f.write("Appended line\n") with open("append_example.txt", "r") as f: result = f.read() print(result.strip())
Deze code maakt eerst een bestand aan met een initiële inhoud. Vervolgens wordt hetzelfde bestand geopend in de append-modus ('a') om een nieuwe regel aan het einde toe te voegen. Ten slotte wordt de volledige inhoud van het bestand gelezen en afgedrukt, zodat je kunt zien dat de nieuwe gegevens aan het einde zijn toegevoegd zonder de oorspronkelijke inhoud te verwijderen of te wijzigen.
Binaire modus
De binaire modus wordt gebruikt wanneer je bestanden als bytes in plaats van tekst moet lezen of schrijven. Dit is essentieel voor het werken met niet-tekstbestanden, zoals afbeeldingen, audiobestanden of uitvoerbare bestanden. Je combineert 'b' met andere bestandsmodi, zoals 'rb' voor lezen in binaire modus of 'wb' voor schrijven in binaire modus.
Wanneer je een bestand in binaire modus opent, worden gegevens exact als ruwe bytes gelezen en geschreven. Er vindt geen codering of decodering plaats, dus je moet de gegevens behandelen als bytes-objecten. Dit voorkomt problemen die kunnen ontstaan bij het lezen of schrijven van bestanden die geen standaard tekstcodering gebruiken.
12345678byte_data = b"\x48\x65\x6c\x6c\x6f, binary world!" # This is 'Hello, binary world!' in bytes with open("sample_binary.bin", "wb") as f: f.write(byte_data) with open("sample_binary.bin", "rb") as f: read_bytes = f.read() print(read_bytes)
De code schrijft een byte-string met het bericht 'Hello, binary world!' naar een bestand met de naam sample_binary.bin met behulp van de write-binary modus ('wb'). De b in de modus zorgt ervoor dat het bestand als binaire data wordt behandeld, niet als tekst. Na het schrijven wordt het bestand opnieuw geopend in read-binary modus ('rb') om de ruwe bytes te lezen. De code print vervolgens de leesbare weergave van het bytes-object.
Lees- en schrijfmethode
De r+ bestandsmodus maakt het mogelijk om zowel te lezen uit als te schrijven naar een bestaand bestand. Wanneer een bestand wordt geopend met r+, kunnen de inhoud worden gelezen, aangepast of nieuwe gegevens op elke positie worden toegevoegd. Het bestand moet echter al bestaan - r+ maakt geen nieuw bestand aan als er geen bestand met de opgegeven naam wordt gevonden.
Deze modus is nuttig wanneer gegevens in een bestand moeten worden bijgewerkt of verwerkt zonder de bestaande inhoud te verliezen. Elke schrijfoperatie begint vanaf de huidige positie in het bestand, zodat precies kan worden bepaald waar wijzigingen plaatsvinden met behulp van bestandswijzermethoden zoals seek().
1234567891011121314151617# Writing initial content to the file with open("data.txt", "w") as f: f.write("First line\nSecond line\n") # Opening the file in r+ mode for reading and updating with open("data.txt", "r+") as f: # Reading and printing the original content original_content = f.read() print("Before update:\n" + original_content.strip()) # Moving file pointer to the beginning f.seek(0) # Overwriting the first line f.write("Updated first line\n") # Moving pointer to the start to read the updated content f.seek(0) updated_content = f.read() print("After update:\n" + updated_content.strip())
Deze uitvoer toont aan dat de eerste regel van het bestand succesvol is overschreven. Met de lees-/schrijfmodus ('r+') kun je specifieke delen van een bestand bijwerken – zoals alleen de eerste regel aanpassen – zonder het hele bestand te wissen of te herschrijven. Dit is handig voor het bewerken van bestaande gegevens terwijl andere inhoud in het bestand behouden blijft.
Wanneer je de modus 'r+' gebruikt, zal alle nieuwe data die je schrijft bestaande inhoud overschrijven vanaf de huidige positie in het bestand. Als de nieuwe inhoud korter is dan het origineel, blijft het resterende deel van de oude regel in het bestand staan. Dit betekent dat gedeeltelijke restanten van de vorige inhoud nog zichtbaar kunnen zijn na het schrijven. Het bestand wordt niet automatisch ingekort, dus wees ervan bewust dat extra tekens uit de oorspronkelijke inhoud kunnen blijven bestaan na het einde van je nieuwe data.
1. Welke bestandsmodus moet je gebruiken als je een bestaand tekstbestand wilt lezen zonder het te wijzigen?
2. Welke bestandsmodus moet je gebruiken om nieuwe data toe te voegen aan het einde van een bestaand tekstbestand zonder de huidige inhoud te verwijderen?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.