Python har indbyggede funktioner til at oprette, skrive og læse filer. Der er to typer filer, der kan håndteres i python, normale tekstfiler og binære filer (skrevet på binært sprog, 0'er og 1'er).
- Tekstfiler: I denne type fil afsluttes hver tekstlinje med et specialtegn kaldet EOL (End of Line), som er det nye linjetegn ('
') i python som standard. Binære filer: I denne type fil er der ingen terminator for en linje, og dataene gemmes efter konvertering til maskinforståeligt binært sprog.
Bemærk: For at vide mere om filhåndtering Klik her .
Indholdsfortegnelse
Adgangstilstand
Adgangstilstande styrer den type operationer, der er mulige i den åbnede fil. Det refererer til, hvordan filen vil blive brugt, når den er åbnet. Disse tilstande definerer også placeringen af filhåndtaget i filen. Filhåndtaget er som en markør, der definerer, hvorfra dataene skal læses eller skrives i filen. Forskellige adgangstilstande til at læse en fil er –
- Skriv kun ('w'): Åbn filen til skrivning. For en eksisterende fil afkortes dataene og overskrives. Håndtaget er placeret i begyndelsen af filen. Opretter filen, hvis filen ikke findes. Skriv og læs ('w+'): Åbn filen til læsning og skrivning. For en eksisterende fil afkortes data og overskrives. Håndtaget er placeret i begyndelsen af filen. Tilføj kun ('a'): Åbn filen til skrivning. Filen oprettes, hvis den ikke findes. Håndtaget er placeret for enden af filen. Dataene, der skrives, vil blive indsat til sidst, efter de eksisterende data.
Bemærk: For at vide mere om adgangstilstand Klik her .
Åbning af en fil
Det gøres ved hjælp af funktionen open(). Der kræves ikke noget modul for at blive importeret til denne funktion. Syntaks:
File_object = open(r'File_Name', 'Access_Mode')>
Filen skal eksistere i samme mappe som python-programfilen ellers, den fulde adresse på filen skal skrives på stedet for filnavnet. Bemærk: R er placeret før filnavn for at forhindre, at tegnene i filnavnstrengen behandles som specialtegn. For eksempel, hvis der er emp i filadressen, behandles som tabulatortegn, og fejlen hæves med ugyldig adresse. r'et gør strengen rå, det vil sige, at den fortæller, at strengen er uden specialtegn. R kan ignoreres, hvis filen er i samme mappe, og adressen ikke placeres.
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 oprettes fil1 som objekt for MyFile1 og fil2 som objekt for MyFile2.
Lukning af en fil
close()-funktionen lukker filen og frigør den hukommelsesplads, der er erhvervet af den pågældende fil. Den bruges på det tidspunkt, hvor filen ikke længere er nødvendig, eller hvis den skal åbnes i en anden filtilstand. 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
Der er to måder at skrive i en fil.
- write() : Indsætter strengen str1 på en enkelt linje i tekstfilen.
File_object.write(str1)>
- writelines() : For en liste over strengelementer indsættes hver streng i tekstfilen. Bruges til at indsætte flere strenge på én gang.
File_object.writelines(L) for L = [str1, str2, str3]>
Bemærk: ' ' behandles som et specialtegn på to bytes. 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()> |
>
>
Produktion:
Hello This is Delhi This is Paris This is London>
Tilføjelse til en fil
Når filen åbnes i tilføjelsestilstand, er håndtaget placeret i slutningen af filen. De data, der skrives, vil blive indsat til sidst, efter de eksisterende data. Lad os se nedenstående eksempel for at tydeliggøre forskellen mellem skrivetilstand og tilføjelsestilstand.
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()> |
>
>
Produktion:
Output of Readlines after appending This is Delhi This is Paris This is London Today Output of Readlines after writing Tomorrow>
Med udsagn
med statement i Python bruges i undtagelseshåndtering for at gøre koden renere og meget mere læsbar. Det forenkler styringen af fælles ressourcer som filstrømme. I modsætning til ovenstående implementeringer er der ingen grund til at kalde file.close() ved brug med sætning. Selve med-erklæringen sikrer korrekt anskaffelse og frigivelse af ressourcer. 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())> |
>
>
Produktion:
Hello This is Delhi This is Paris This is London>
Bemærk: For at vide mere om med erklæring klik her.
bruger til erklæring:
trin:
For at skrive til en fil i Python ved hjælp af en for-sætning, kan du følge disse trin:
Åbn filen ved hjælp af funktionen open() med den passende tilstand ('w' til skrivning).
Brug for-sætningen til at sløjfe over de data, du vil skrive til filen.
Brug filobjektets write()-metode til at skrive dataene til filen.
Luk filen ved hjælp af filobjektets close()-metode.
I dette eksempel åbnes filen til skrivning ved at bruge med open('fil.txt', 'w') som f-sætning. De data, der skal skrives, gemmes i en liste kaldet data. For-sætningen bruges til at sløjfe over hver linje af data på listen. F.write(line + ' ')-sætningen skriver hver linje med data til filen med et nylinjetegn ( ) i slutningen. Endelig lukkes filen automatisk, når med blok slutter.
java switch case
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> |
>
>Produktion
This is the first line This is the second line This is the third line>
Nærme sig:
Koden åbner en fil kaldet file.txt i skrivetilstand ved hjælp af en med blok for at sikre, at filen er korrekt lukket, når blokken slutter. Den definerer en liste over strenge kaldet data, der repræsenterer de linjer, der skal skrives til filen. Koden bruger derefter en for-løkke til at iterere gennem hver streng i data, og skriver hver streng til filen ved hjælp af write()-metoden. Koden tilføjer et nylinjetegn til hver streng for at sikre, at hver streng er skrevet på en ny linje i filen. Koden udskriver valgfrit hver streng, som den skrives til filen.
Tidskompleksitet:
Både den originale kode og den alternative kode har en tidskompleksitet på O(n), hvor n er antallet af linjer, der skal skrives til filen. Dette skyldes, at begge koder skal iterere gennem hver linje i datalisten for at skrive den til filen.
Rumkompleksitet:
Den originale kode og den alternative kode har samme rumkompleksitet som O(n), hvor n er antallet af linjer, der skal skrives til filen. Dette skyldes, at begge koder skal oprette en liste over strenge, der repræsenterer de linjer, der skal skrives til filen.