Python har innebygde funksjoner for å lage, skrive og lese filer. Det er to typer filer som kan håndteres i python, vanlige tekstfiler og binære filer (skrevet på binærspråk, 0s og 1s).
- Tekstfiler: I denne typen fil avsluttes hver tekstlinje med et spesialtegn kalt EOL (End of Line), som er det nye linjetegnet ('
') i python som standard. Binære filer: I denne typen fil er det ingen terminator for en linje, og dataene lagres etter å ha konvertert dem til maskinforståelig binærspråk.
Merk: For å vite mer om filhåndtering Klikk her .
Innholdsfortegnelse
Tilgangsmodus
Tilgangsmoduser styrer 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. Filhåndtaket er som en markør, som definerer hvor dataene skal leses eller skrives i filen. Ulike tilgangsmoduser for å lese en fil er –
- Bare skriv ('w'): Åpne filen for skriving. For en eksisterende fil blir dataene avkortet og overskrevet. Håndtaket er plassert i begynnelsen av filen. Oppretter filen hvis filen ikke eksisterer. Skriv og les ('w+'): Åpne filen for lesing og skriving. For en eksisterende fil blir data avkortet og overskrevet. Håndtaket er plassert i begynnelsen av filen. Bare tilføy ('a'): Åpne filen for skriving. Filen opprettes hvis den ikke eksisterer. Håndtaket er plassert i enden av filen. Dataene som skrives vil bli satt inn på slutten, etter de eksisterende dataene.
Merk: For å vite mer om tilgangsmodus Klikk her .
Åpne en fil
Det gjøres ved å bruke funksjonen open(). Ingen modul er nødvendig for å bli importert for denne funksjonen. Syntaks:
File_object = open(r'File_Name', 'Access_Mode')>
Filen skal eksistere i samme katalog som python-programfilen ellers, den fullstendige adressen til filen skal skrives på stedet for filnavnet. Merk: r-en plasseres foran filnavnet for å forhindre at tegnene i filnavnstrengen behandles som spesialtegn. For eksempel, hvis det er emp i filadressen, behandles som tabulatortegnet og feilen oppstår for ugyldig adresse. r-en gjør strengen rå, det vil si at den forteller at strengen er uten spesialtegn. R-en kan ignoreres hvis filen er i samme katalog og adressen ikke blir plassert.
Python3
# Open function to open the file 'MyFile1.txt'> # (same directory) in read mode and> file1>=> open>('MyFile.txt', 'w')> > # store its reference in the variable file1> # and 'MyFile2.txt' in D:Text in file2> file2>=> open>(r'D:TextMyFile2.txt', 'w>+>')> |
>
>
Her opprettes fil1 som objekt for MinFil1 og fil2 som objekt for MinFil2.
Lukke en fil
close()-funksjonen lukker filen og frigjør minneplassen som er ervervet av den filen. Den brukes på det tidspunktet filen ikke lenger er nødvendig eller hvis den skal åpnes i en annen filmodus. Syntaks:
File_object.close()>
Python3
# Opening and Closing a file 'MyFile.txt'> # for object name file1.> file1>=> open>('MyFile.txt', 'w')> file1.close()> |
>
>
Skriver til fil
Det er to måter å skrive i en fil.
- write() : Setter inn strengen str1 på en enkelt linje i tekstfilen.
File_object.write(str1)>
- writelines() : For en liste over strengelementer settes hver streng inn i tekstfilen. Brukes til å sette inn flere strenger på en gang.
File_object.writelines(L) for L = [str1, str2, str3]>
Merk: ' ' behandles som et spesialtegn på to byte. Eksempel:
Python3
# Python program to demonstrate> # writing to file> # Opening a file> file1>=> open>(>'myfile.txt'>,>'w'>)> L>=> ['This>is> Delhi
', 'This>is> Paris
', 'This>is> London
']> s>=> 'Hello
'> # Writing a string to file> file1.write(s)> # Writing multiple strings> # at a time> file1.writelines(L)> # Closing file> file1.close()> # Checking if the data is> # written to file or not> file1>=> open>(>'myfile.txt'>,>'r'>)> print>(file1.read())> file1.close()> |
>
>
Produksjon:
Hello This is Delhi This is Paris This is London>
Legger til en fil
Når filen åpnes i tilleggsmodus, er håndtaket plassert på slutten av filen. Dataene som skrives vil bli satt inn på slutten, etter de eksisterende dataene. La oss se eksemplet nedenfor for å klargjøre forskjellen mellom skrivemodus og tilleggsmodus.
Python3
# Python program to illustrate> # Append vs write mode> 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 London Today Output of Readlines after writing Tomorrow>
Med uttalelse
with statement i Python 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. Syntaks:
with open filename as file:>
Python3
# Program to show various ways to> # write 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)> # 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>
Merk: For å vite mer om med uttalelse klikk her.
bruker for uttalelse:
trinn:
For å skrive til en fil i Python ved hjelp av en for-setning, kan du følge disse trinnene:
Åpne filen ved å bruke open()-funksjonen med riktig modus ('w' for skriving).
Bruk for-setningen til å gå over dataene du vil skrive til filen.
Bruk filobjektets write()-metode for å skrive dataene til filen.
Lukk filen ved å bruke filobjektets close()-metode.
I dette eksemplet åpnes filen for skriving ved å bruke med open('file.txt', 'w') som f-setning. Dataene som skal skrives lagres i en liste kalt data. For-setningen brukes til å gå over hver linje med data i listen. F.write(line + ' ')-setningen skriver hver linje med data til filen med et linjeskifttegn ( ) på slutten. Til slutt lukkes filen automatisk når med blokken slutter.
gruppering
Python3
# Open the file for writing> with>open>(>'file.txt'>,>'w'>) as f:> ># Define the data to be written> >data>=> [>'This is the first line'>,>'This is the second line'>,>'This is the third line'>]> ># Use a for loop to write each line of data to the file> >for> line>in> data:> >f.write(line>+> '
'>)> ># Optionally, print the data as it is written to the file> >print>(line)> # The file is automatically closed when the 'with' block ends> |
>
>Produksjon
This is the first line This is the second line This is the third line>
Nærme seg:
Koden åpner en fil kalt file.txt i skrivemodus ved å bruke en med blokk for å sikre at filen er ordentlig lukket når blokkeringen avsluttes. Den definerer en liste over strenger kalt data som representerer linjene som skal skrives til filen. Koden bruker deretter en for-løkke for å iterere gjennom hver streng i data, og skriver hver streng til filen ved å bruke write()-metoden. Koden legger til et nylinjetegn til hver streng for å sikre at hver streng skrives på en ny linje i filen. Koden skriver valgfritt ut hver streng etter hvert som den skrives til filen.
Tidskompleksitet:
Både den opprinnelige koden og den alternative koden har en tidskompleksitet på O(n), der n er antall linjer som skal skrives til filen. Dette er fordi begge kodene må iterere gjennom hver linje i datalisten for å skrive den til filen.
Plass kompleksitet:
Den opprinnelige koden og den alternative koden har samme romkompleksitet som O(n), der n er antall linjer som skal skrives til filen. Dette er fordi begge kodene må lage en liste over strenger som representerer linjene som skal skrives til filen.