Med branjem ali pisanjem v datoteko način dostopa ureja vrsto operacij, ki so možne v odprti datoteki. Nanaša se na to, kako bo datoteka uporabljena, ko bo odprta. Ti načini določajo tudi lokacijo ročaja datoteke v datoteki. Opredelitev teh načinov dostopa je naslednja:
- Samo pripni ('a'): Odprite datoteko za pisanje. Dodaj in preberi ('a+'): Odprite datoteko za branje in pisanje.
Ko se datoteka odpre v načinu dodajanja v Pythonu, je ročica postavljena na konec datoteke. Podatki, ki se zapisujejo, bodo vstavljeni na koncu, za obstoječimi podatki.
Primer 1: Program Python za ponazoritev načina dodajanja in pisanja.
Python3
sort arraylist java
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()> |
>
>
Izhod:
Output of Readlines after appending This is Delhi This is Paris This is LondonToday Output of Readlines after writing Tomorrow>
Primer 2: Dodaj podatke iz nove vrstice
V zgornjem primeru ravnanje z datotekami , je razvidno, da podatki niso pripeti iz nove vrstice. To lahko storite tako, da v datoteko zapišete znak za novo vrstico ' '.
Python3
tipkopis vsak
# 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()> |
>
>
Izhod:
Output of Readlines after appending This is Delhi This is Paris This is London TodayTomorrow>
Opomba: ' ' se obravnava kot poseben znak dveh bajtov.
Primer 3: Uporaba stavka With v Pythonu
z izjavo se uporablja pri obravnavanju izjem, da je koda čistejša in veliko bolj berljiva. Poenostavlja upravljanje skupnih virov, kot so datotečni tokovi. Za razliko od zgornjih izvedb pri uporabi stavka with ni treba klicati file.close(). Sama izjava with zagotavlja pravilno pridobivanje in sprostitev virov.
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())> |
>
>
Izhod:
diana mary blacker
Hello This is Delhi This is Paris This is London Today>
Opomba: Če želite izvedeti več o z izjavo Klikni tukaj .
Uporaba modula shutil:
Ta pristop uporablja metodo shutil.copyfileobj() za pripenjanje vsebine druge datoteke (source_file) v 'file.txt'. To je lahko koristno, če želite vsebino ene datoteke dodati drugi, ne da bi morali vsebino najprej prebrati v pomnilnik.
Pristop:
Koda uporablja funkcijo shutil.copyfileobj() za kopiranje vsebine objekta source_file v novo datoteko z imenom file.txt. Stavek with se uporablja za odpiranje in samodejno zapiranje datoteke z uporabo datotečnega predmeta f.
Časovna zapletenost:
Časovna zahtevnost funkcije shutil.copyfileobj() je sorazmerna z velikostjo datoteke, ki se kopira, saj mora prebrati in zapisati vsak bajt datoteke. Zato je časovna kompleksnost kode O(n), kjer je n velikost izvorne_datoteke.
Kompleksnost prostora:
Prostorska zapletenost kode je O(1), saj ne dodeli nobenega dodatnega pomnilnika, ki presega tisto, kar je potrebno za datotečna objekta source_file in f. Funkcija shutil.copyfileobj() kopira vsebino datoteke v kosih, zato ji ni treba naložiti celotne datoteke v pomnilnik hkrati.
Na splošno ima koda linearno časovno zapletenost in konstantno prostorsko zapletenost, pri čemer je časovna zapletenost sorazmerna z velikostjo datoteke, ki se kopira.
Python3
hadoop vadnica
import> shutil> with>open>(>'file.txt'>,>'a'>) as f:> >shutil.copyfileobj(source_file, f)> |
>
>