Při čtení nebo zápisu do souboru režim přístupu řídí typ operací, které jsou možné s otevřeným souborem. Odkazuje na to, jak bude soubor použit po jeho otevření. Tyto režimy také definují umístění úchytu souboru v souboru. Definice těchto přístupových režimů je následující:
- Pouze připojit („a“): Otevřete soubor pro zápis. Připojit a přečíst (‚a+‘): Otevřete soubor pro čtení a zápis.
Když je soubor otevřen v režimu připojení v Pythonu, je úchyt umístěn na konci souboru. Zapisovaná data budou vložena na konec, za existující data.
Příklad 1: Program Python pro ilustraci režimu Append vs.
Python3
abeceda s čísly
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()> |
>
>
Výstup:
Output of Readlines after appending This is Delhi This is Paris This is LondonToday Output of Readlines after writing Tomorrow>
Příklad 2: Připojit data z nového řádku
Ve výše uvedeném příkladu zpracování souborů , je vidět, že data nejsou připojena z nového řádku. To lze provést zapsáním znaku nového řádku ‚ ‘ do souboru.
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()> |
>
>
Výstup:
Output of Readlines after appending This is Delhi This is Paris This is London TodayTomorrow>
Poznámka: „ “ je považováno za speciální znak o dvou bajtech.
Příklad 3: Použití příkazu With v Pythonu
s prohlášením se používá při zpracování výjimek, aby byl kód čistší a mnohem čitelnější. Zjednodušuje správu běžných zdrojů, jako jsou datové proudy souborů. Na rozdíl od výše uvedených implementací není potřeba volat file.close() při použití s příkazem. Samotný příkaz with zajišťuje řádné získání a uvolnění zdrojů.
Python3
javascript tutoriál
# 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())> |
>
>
Výstup:
Hello This is Delhi This is Paris This is London Today>
Poznámka: Chcete-li vědět více o s prohlášením klikněte zde .
Použití modulu Shutil:
Tento přístup používá metodu Shutil.copyfileobj() k připojení obsahu jiného souboru (zdrojový_soubor) k souboru „file.txt“. To může být užitečné, pokud chcete připojit obsah jednoho souboru k druhému, aniž byste museli nejprve načíst obsah do paměti.
Přístup:
Kód používá funkci Shutil.copyfileobj() ke zkopírování obsahu objektu source_file do nového souboru s názvem file.txt. Příkaz with se používá k otevření a automatickému zavření souboru pomocí objektu file f.
Časová náročnost:
Časová složitost funkce Shutil.copyfileobj() je úměrná velikosti kopírovaného souboru, protože potřebuje číst a zapisovat každý bajt souboru. Časová složitost kódu je tedy O(n), kde n je velikost zdrojového_souboru.
jak převést celé číslo na řetězec v java
Prostorová složitost:
Prostorová složitost kódu je O(1), protože nepřiděluje žádnou další paměť nad rámec toho, co je vyžadováno pro souborové objekty source_file af. Funkce shutil.copyfileobj() zkopíruje obsah souboru po kouscích, takže není nutné načítat celý soubor do paměti najednou.
Celkově má kód lineární časovou složitost a konstantní prostorovou složitost, kde je časová složitost úměrná velikosti kopírovaného souboru.
Python3
import> shutil> with>open>(>'file.txt'>,>'a'>) as f:> >shutil.copyfileobj(source_file, f)> |
>
>