Python připojit k souboru
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
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
# 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.
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)> |