Python legge til en fil
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
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)> |