Når du leser eller skriver til en fil, styrer tilgangsmodus hvilken type operasjoner som er mulig i den åpnede filen. Det refererer til hvordan filen vil bli brukt når den er åpnet. Disse modusene definerer også plasseringen av filhåndtaket i filen. Definisjonen av disse tilgangsmodusene er som følger:
- Bare tilføy ('a'): Åpne filen for skriving. Legg til og les (‘a+’): Åpne filen for lesing og skriving.
Når filen åpnes i tilleggsmodus i Python , er håndtaket plassert på slutten av filen. Dataene som skrives vil bli satt inn på slutten, etter de eksisterende dataene.
Eksempel 1: Python-program for å illustrere Append vs skrivemodus.
Python3
azurblå abonnement
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()> |
>
>
Produksjon:
Output of Readlines after appending This is Delhi This is Paris This is LondonToday Output of Readlines after writing Tomorrow>
Eksempel 2: Legg til data fra en ny linje
I eksemplet ovenfor på filhåndtering , kan det ses at dataene ikke er lagt til fra den nye linjen. Dette kan gjøres ved å skrive nylinjetegnet ' ' til filen.
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()> |
>
>
Produksjon:
Output of Readlines after appending This is Delhi This is Paris This is London TodayTomorrow>
Merk: ' ' behandles som et spesialtegn på to byte.
Eksempel 3: Bruke With-setning i Python
med uttalelse brukes i unntakshåndtering for å gjøre koden renere og mye mer lesbar. Det forenkler administrasjonen av vanlige ressurser som filstrømmer. I motsetning til implementeringene ovenfor, er det ikke nødvendig å kalle file.close() når du bruker med setning. Med-erklæringen i seg selv sikrer riktig anskaffelse og frigjøring av ressurser.
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())> |
>
>
Produksjon:
Hello This is Delhi This is Paris This is London Today>
Merk: For å vite mer om med uttalelse Klikk her .
Bruke shutil-modulen:
Denne tilnærmingen bruker shutil.copyfileobj()-metoden for å legge til innholdet i en annen fil (kildefil) til 'file.txt'. Dette kan være nyttig hvis du vil legge til innholdet i en fil til en annen uten å måtte lese innholdet inn i minnet først.
Nærme seg:
Koden bruker funksjonen shutil.copyfileobj() for å kopiere innholdet i kildefil-objektet til en ny fil kalt file.txt. With-setningen brukes til å åpne og automatisk lukke filen ved å bruke filobjektet f.
Tidskompleksitet:
Tidskompleksiteten til funksjonen shutil.copyfileobj() er proporsjonal med størrelsen på filen som kopieres, siden den trenger å lese og skrive hver byte i filen. Derfor er tidskompleksiteten til koden O(n), der n er størrelsen på kildefilen.
Plass kompleksitet:
Kodens plasskompleksitet er O(1), siden den ikke tildeler noe ekstra minne utover det som kreves for filobjektene kildefil og f. Funksjonen shutil.copyfileobj() kopierer filinnholdet i biter, slik at den ikke trenger å laste hele filen inn i minnet på en gang.
Samlet sett har koden en lineær tidskompleksitet og konstant romkompleksitet, hvor tidskompleksiteten er proporsjonal med størrelsen på filen som kopieres.
Python3
import> shutil> with>open>(>'file.txt'>,>'a'>) as f:> >shutil.copyfileobj(source_file, f)> |
>
>