Podczas odczytu lub zapisu do pliku tryb dostępu reguluje rodzaj operacji możliwych do wykonania na otwartym pliku. Odnosi się do sposobu wykorzystania pliku po jego otwarciu. Tryby te definiują również położenie uchwytu pliku w pliku. Definicja tych trybów dostępu jest następująca:
- Tylko dołącz („a”): Otwórz plik do zapisu. Dołącz i przeczytaj („a+”): Otwórz plik do odczytu i zapisu.
Kiedy plik jest otwierany w trybie dołączania w Pythonie, uchwyt znajduje się na końcu pliku. Zapisywane dane zostaną wstawione na końcu, po danych już istniejących.
Przykład 1: Program w języku Python ilustrujący tryb dodawania i zapisu.
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()> |
>
lis kontra wilk
>
Wyjście:
Output of Readlines after appending This is Delhi This is Paris This is LondonToday Output of Readlines after writing Tomorrow>
Przykład 2: Dołącz dane z nowej linii
W powyższym przykładzie Obsługa plików , widać, że dane nie są dodawane od nowej linii. Można to zrobić wpisując do pliku znak nowej linii „ ”.
Python3
gdzie znajdę ustawienia przeglądarki
# 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()> |
>
narodowość Pete'a Davidsona
>
Wyjście:
Output of Readlines after appending This is Delhi This is Paris This is London TodayTomorrow>
Notatka: „ ” jest traktowane jako znak specjalny składający się z dwóch bajtów.
Przykład 3: Używanie instrukcji With w Pythonie
z oświadczeniem jest używany w obsłudze wyjątków, aby kod był czystszy i znacznie bardziej czytelny. Upraszcza zarządzanie typowymi zasobami, takimi jak strumienie plików. W przeciwieństwie do powyższych implementacji, podczas korzystania z instrukcji with nie ma potrzeby wywoływania metody file.close(). Sama instrukcja with zapewnia prawidłowe pozyskiwanie i uwalnianie zasobów.
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())> |
>
ile uncji to 10 mililitrów
>
Wyjście:
Hello This is Delhi This is Paris This is London Today>
Notatka: Aby dowiedzieć się więcej o z oświadczeniem Kliknij tutaj .
Korzystanie z modułu Shuil:
Podejście to wykorzystuje metodę Shutil.copyfileobj() w celu dołączenia zawartości innego pliku (pliku_źródłowego) do „pliku.txt”. Może to być przydatne, jeśli chcesz dołączyć zawartość jednego pliku do drugiego bez konieczności wcześniejszego wczytywania zawartości do pamięci.
Zbliżać się:
W kodzie zastosowano funkcję Shutil.copyfileobj() w celu skopiowania zawartości obiektu source_file do nowego pliku o nazwie file.txt. Instrukcja with służy do otwierania i automatycznego zamykania pliku przy użyciu obiektu pliku f.
Złożoność czasowa:
Złożoność czasowa funkcji Shutil.copyfileobj() jest proporcjonalna do rozmiaru kopiowanego pliku, ponieważ musi ona czytać i zapisywać każdy bajt pliku. Dlatego złożoność czasowa kodu wynosi O(n), gdzie n jest rozmiarem pliku źródłowego.
Złożoność przestrzeni:
Złożoność przestrzenna kodu wynosi O(1), ponieważ nie przydziela on żadnej dodatkowej pamięci poza tym, co jest wymagane dla obiektów plikowych plik_źródłowy i f. Funkcja Shutil.copyfileobj() kopiuje zawartość pliku fragmentami, dzięki czemu nie ma potrzeby ładowania całego pliku do pamięci na raz.
Ogólnie rzecz biorąc, kod ma liniową złożoność czasową i stałą złożoność przestrzenną, gdzie złożoność czasowa jest proporcjonalna do rozmiaru kopiowanego pliku.
scan.next Java
Python3
import> shutil> with>open>(>'file.txt'>,>'a'>) as f:> >shutil.copyfileobj(source_file, f)> |
>
>