Pripojiť Python k súboru
Počas čítania alebo zápisu do súboru režim prístupu riadi typ operácií, ktoré sú možné v otvorenom súbore. Vzťahuje sa na to, ako sa bude súbor používať po jeho otvorení. Tieto režimy tiež definujú umiestnenie rukoväte súboru v súbore. Definícia týchto režimov prístupu je nasledovná:
- Pripojiť iba („a“): Otvorte súbor na zápis. Pripojiť a prečítať (‚a+‘): Otvorenie súboru na čítanie a zápis.
Keď je súbor otvorený v režime pripojenia v Pythone, rukoväť je umiestnená na konci súboru. Zapisované dáta budú vložené na koniec, za existujúce dáta.
Príklad 1: Program Python na ilustráciu 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ýkon:
Output of Readlines after appending This is Delhi This is Paris This is LondonToday Output of Readlines after writing Tomorrow
Príklad 2: Pripojte údaje z nového riadku
Vo vyššie uvedenom príklade manipulácia so súbormi , je vidieť, že údaje nie sú pridané z nového riadku. Môžete to urobiť zapísaním znaku nového riadku „ “ do súboru.
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ýkon:
Output of Readlines after appending This is Delhi This is Paris This is London TodayTomorrow
Poznámka: „ “ sa považuje za špeciálny znak pozostávajúci z dvoch bajtov.
Príklad 3: Použitie príkazu With v Pythone
s výpisom sa používa pri spracovaní výnimiek, aby bol kód čistejší a oveľa čitateľnejší. Zjednodušuje správu bežných zdrojov, ako sú prúdy súborov. Na rozdiel od vyššie uvedených implementácií nie je potrebné volať file.close() pri použití s príkazom. Samotný príkaz with zabezpečuje správne získanie a uvoľnenie zdrojov.
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ýkon:
Hello This is Delhi This is Paris This is London Today
Poznámka: Ak chcete vedieť viac o s vyhlásením kliknite tu .
Použitie modulu Shutil:
Tento prístup používa metódu Shutil.copyfileobj() na pripojenie obsahu iného súboru (zdrojový_súbor) do súboru „file.txt“. To môže byť užitočné, ak chcete pripojiť obsah jedného súboru k druhému bez toho, aby ste museli najprv načítať obsah do pamäte.
Prístup:
Kód používa funkciu Shutil.copyfileobj() na skopírovanie obsahu objektu source_file do nového súboru s názvom file.txt. Príkaz with sa používa na otvorenie a automatické zatvorenie súboru pomocou objektu súboru f.
Časová zložitosť:
Časová zložitosť funkcie Shutil.copyfileobj() je úmerná veľkosti kopírovaného súboru, pretože potrebuje prečítať a zapísať každý bajt súboru. Časová zložitosť kódu je teda O(n), kde n je veľkosť zdrojového_súboru.
Priestorová zložitosť:
Priestorová zložitosť kódu je O(1), keďže neprideľuje žiadnu dodatočnú pamäť nad rámec toho, čo je potrebné pre súborové objekty source_file a f. Funkcia shutil.copyfileobj() skopíruje obsah súboru po častiach, takže nie je potrebné načítať celý súbor do pamäte naraz.
Celkovo má kód lineárnu časovú zložitosť a konštantnú priestorovú zložitosť, pričom časová zložitosť je úmerná veľkosti kopírovaného súboru.
Python3
import> shutil> with> open> (> 'file.txt'> ,> 'a'> ) as f:> > shutil.copyfileobj(source_file, f)> |