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)>