När du läser eller skriver till en fil styr åtkomstläget vilken typ av operationer som är möjliga i den öppnade filen. Det hänvisar till hur filen kommer att användas när den väl har öppnats. Dessa lägen definierar också platsen för filhandtaget i filen. Definitionen av dessa åtkomstlägen är som följer:
- Lägg endast till ('a'): Öppna filen för skrivning. Lägg till och läs ('a+'): Öppna filen för att läsa och skriva.
När filen öppnas i tilläggsläge i Python är handtaget placerat i slutet av filen. Data som skrivs kommer att infogas i slutet, efter befintlig data.
Exempel 1: Python-program för att illustrera Append vs skrivläge.
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()> |
>
>
Produktion:
Output of Readlines after appending This is Delhi This is Paris This is LondonToday Output of Readlines after writing Tomorrow>
Exempel 2: Lägg till data från en ny rad
I exemplet ovan på filhantering , kan det ses att data inte läggs till från den nya raden. Detta kan göras genom att skriva nyradstecknet ' ' till filen.
Python3
java logotyp
# 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()> |
>
>
Produktion:
numpy menar
Output of Readlines after appending This is Delhi This is Paris This is London TodayTomorrow>
Notera: ' ' behandlas som ett specialtecken av två byte.
Exempel 3: Använder With-satsen i Python
med uttalande används i undantagshantering för att göra koden renare och mycket mer läsbar. Det förenklar hanteringen av vanliga resurser som filströmmar. Till skillnad från ovanstående implementeringar finns det inget behov av att anropa file.close() när du använder med-satsen. Med uttalandet i sig säkerställer korrekt förvärv och frigörande av resurser.
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())> |
>
>
Produktion:
Hello This is Delhi This is Paris This is London Today>
Notera: Att veta mer om med statement Klicka här .
Använda shutil-modulen:
Detta tillvägagångssätt använder metoden shutil.copyfileobj() för att lägga till innehållet i en annan fil (källa_fil) till 'file.txt'. Detta kan vara användbart om du vill lägga till innehållet i en fil till en annan utan att först behöva läsa innehållet i minnet.
Närma sig:
Koden använder funktionen shutil.copyfileobj() för att kopiera innehållet i source_file-objektet till en ny fil som heter file.txt. With-satsen används för att öppna och automatiskt stänga filen med hjälp av filobjektet f.
Tidskomplexitet:
Tidskomplexiteten för funktionen shutil.copyfileobj() är proportionell mot storleken på filen som kopieras, eftersom den behöver läsa och skriva varje byte i filen. Därför är tidskomplexiteten för koden O(n), där n är storleken på källfilen.
Utrymmes komplexitet:
Kodens rymdkomplexitet är O(1), eftersom den inte allokerar något extra minne utöver vad som krävs för filobjekten source_file och f. Funktionen shutil.copyfileobj() kopierar filinnehållet i bitar, så den behöver inte ladda hela filen i minnet på en gång.
Sammantaget har koden en linjär tidskomplexitet och konstant rymdkomplexitet, där tidskomplexiteten är proportionell mot storleken på filen som kopieras.
Python3
konvertera str till int
import> shutil> with>open>(>'file.txt'>,>'a'>) as f:> >shutil.copyfileobj(source_file, f)> |
>
>