logo

Python voegt toe aan een bestand

Tijdens het lezen of schrijven naar een bestand bepaalt de toegangsmodus het type bewerkingen dat mogelijk is in het geopende bestand. Het verwijst naar hoe het bestand zal worden gebruikt zodra het is geopend. Deze modi definiëren ook de locatie van de bestandsingang in het bestand. De definitie van deze toegangsmodi is als volgt:

    Alleen toevoegen ('a'): Open het bestand om te schrijven. Toevoegen en lezen (‘a+’): Open het bestand om te lezen en te schrijven.

Wanneer het bestand in Python in de append-modus wordt geopend, wordt de handle aan het einde van het bestand geplaatst. De gegevens die worden geschreven, worden aan het einde ingevoegd, na de bestaande gegevens.



Voorbeeld 1: Python-programma om de Append- versus schrijfmodus te illustreren.

Python3








file1>=> open>(>'myfile.txt'>,>'w'>)> L>=> [>'This is Delhi '>,>'This is Paris '>,>'This is London'>]> file1.writelines(L)> file1.close()> # Append-adds at last> file1>=> open>(>'myfile.txt'>,>'a'>)># append mode> file1.write(>'Today '>)> file1.close()> file1>=> open>(>'myfile.txt'>,>'r'>)> print>(>'Output of Readlines after appending'>)> print>(file1.read())> print>()> file1.close()> # Write-Overwrites> file1>=> open>(>'myfile.txt'>,>'w'>)># write mode> file1.write(>'Tomorrow '>)> file1.close()> file1>=> open>(>'myfile.txt'>,>'r'>)> print>(>'Output of Readlines after writing'>)> print>(file1.read())> print>()> file1.close()>

>

>

Uitgang:

Output of Readlines after appending This is Delhi This is Paris This is LondonToday Output of Readlines after writing Tomorrow>

Voorbeeld 2: Voeg gegevens toe vanaf een nieuwe regel

In het bovenstaande voorbeeld van Bestandsbehandeling , is te zien dat de gegevens niet vanaf de nieuwe regel worden toegevoegd. Dit kunt u doen door het newline-teken ‘ ’ naar het bestand te schrijven.

arraylist java sorteren

Python3




# Python program to illustrate> # append from new line> file1>=> open>(>'myfile.txt'>,>'w'>)> L>=> [>'This is Delhi '>,>'This is Paris '>,>'This is London'>]> file1.writelines(L)> file1.close()> # Append-adds at last> # append mode> file1>=> open>(>'myfile.txt'>,>'a'>)> # writing newline character> file1.write(>' '>)> file1.write(>'Today'>)> # without newline character> file1.write(>'Tomorrow'>)> file1>=> open>(>'myfile.txt'>,>'r'>)> print>(>'Output of Readlines after appending'>)> print>(file1.read())> print>()> file1.close()>

>

>

lokale datum

Uitgang:

Output of Readlines after appending This is Delhi This is Paris This is London TodayTomorrow>

Opmerking: ‘ ’ wordt behandeld als een speciaal teken van twee bytes.

Voorbeeld 3: Gebruik de With-instructie in Python

met verklaring wordt gebruikt bij het afhandelen van uitzonderingen om de code schoner en veel leesbaarder te maken. Het vereenvoudigt het beheer van algemene bronnen zoals bestandsstromen. In tegenstelling tot de bovenstaande implementaties is het niet nodig om file.close() aan te roepen bij gebruik van een statement. De with-verklaring zelf zorgt voor een juiste verwerving en vrijgave van middelen.

Python3




# Program to show various ways to> # append data to a file using> # with statement> L>=> [>'This is Delhi '>,>'This is Paris '>,>'This is London '>]> # Writing to file> with>open>(>'myfile.txt'>,>'w'>) as file1:> ># Writing data to a file> >file1.write(>'Hello '>)> >file1.writelines(L)> # Appending to file> with>open>(>'myfile.txt'>,>'a'>) as file1:> >file1.write(>'Today'>)> # Reading from file> with>open>(>'myfile.txt'>,>'r+'>) as file1:> ># Reading form a file> >print>(file1.read())>

>

>

Uitgang:

Hello This is Delhi This is Paris This is London Today>

Opmerking: Meer weten over met verklaring Klik hier .

Gebruik van de shutil-module:

Deze aanpak maakt gebruik van de methode shutil.copyfileobj() om de inhoud van een ander bestand (source_file) toe te voegen aan ‘file.txt’. Dit kan handig zijn als u de inhoud van het ene bestand aan het andere wilt toevoegen zonder dat u de inhoud eerst in het geheugen hoeft te lezen.

Benadering:
De code gebruikt de functie shutil.copyfileobj() om de inhoud van het source_file-object te kopiëren naar een nieuw bestand met de naam file.txt. De instructie with wordt gebruikt om het bestand te openen en automatisch te sluiten, met behulp van het bestandsobject f.

Tijdcomplexiteit:
De tijdscomplexiteit van de functie shutil.copyfileobj() is evenredig met de grootte van het bestand dat wordt gekopieerd, omdat elke byte van het bestand moet worden gelezen en geschreven. Daarom is de tijdscomplexiteit van de code O(n), waarbij n de grootte van het bronbestand is.

Ruimtecomplexiteit:
De ruimtecomplexiteit van de code is O(1), omdat deze geen extra geheugen toewijst dan wat nodig is voor de bestandsobjecten source_file en f. De functie shutil.copyfileobj() kopieert de bestandsinhoud in stukjes, zodat het niet het hele bestand in één keer in het geheugen hoeft te laden.

Over het geheel genomen heeft de code een lineaire tijdscomplexiteit en een constante ruimtecomplexiteit, waarbij de tijdscomplexiteit evenredig is aan de grootte van het bestand dat wordt gekopieerd.

Python3

alfa-bèta-snoeien




import> shutil> with>open>(>'file.txt'>,>'a'>) as f:> >shutil.copyfileobj(source_file, f)>

>

>