Jak wykonywać operacje wejściowe/wyjściowe Python na plikach z funkcją Open Python
- 1958
- 115
- Ignacy Modzelewski
Manipulacja plików to operacja, która wcześniej czy później będziemy musieli wykonać w naszych programach. Wbudowany Python otwarty
Funkcja zwraca a Obiekt pliku
, który pozwala nam interakcja z plikami w różnych trybach: zobaczymy je w tym artykule.
W tym samouczku Pythona dowiesz się:
- Jak korzystać z funkcji Open Python.
- Jakie są różne tryby działania, które można użyć z funkcją Python Open.
- Jak wchodzić w interakcje z obiektem pliku.
- Dlaczego ważne jest zamknięcie obiektu pliku i jak to zrobić.
Zastosowane wymagania i konwencje oprogramowania
Kategoria | Wymagania, konwencje lub wersja oprogramowania |
---|---|
System | Niezależny od OS |
Oprogramowanie | Python3 |
Inny | Nie wymaga specjalnych uprawnień. |
Konwencje | # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny >>> - Python poleca, które należy wykonać w interaktywnej powładzie |
Instrukcje wejściowe i wyjściowe Pythona
Istnieje wiele powodów, dla których program może wymagać interakcji z plikami: czytanie konfiguracji i ustawień, które wpłyną na zachowanie samego programu, a może przetrwać dane. W tym samouczku zobaczymy, jak wykonać takie zadania, używając funkcji otwartej Python i interakcji z Obiekty pliku
.
Funkcja otwartego Pythona
Przed rozpoczęciem czytania lub pisania plików musimy dowiedzieć się, w jaki sposób możemy uzyskać do nich dostęp. Funkcja otwartego Pythona otwiera plik i zwraca Obiekt pliku
, podniesienie Oserror
Wyjątek, jeśli nie można uzyskać dostępu do zasobu. Ta funkcja ma tylko jeden obowiązkowy argument, plik
, który jest ciągiem lub obojerkiem bajtowym reprezentującym ścieżkę pliku do otwarcia:
>>> fobject = Open ('LinuxConfig.tekst')
Kopiuj Tryb odczytu - „R”
Otworzyliśmy Linuxconfig.tekst
plik, a wynikowy obiekt plików jest teraz odwoływany Fobject
. To jest Python plik-obiekt
który wdraża metody takie jak pisać
I Czytać
. Co jeśli Linuxconfig.tekst
Plik nie istniał? A FillenotFoundError
Wyjątek zostałby podniesiony:
>>> fobject = Open ('LinuxConfig.txt ') traceback (najnowsze połączenie ostatnie): plik „”, wiersz 1, w FillenotFoundError: [errno 2] Brak takiego pliku lub katalogu: „LinuxConfig.tekst'
Kopiuj Jak właśnie powiedzieliśmy powyżej, jedynym obowiązkowym argumentem funkcji otwartej Pythona jest plik
. Gdy jest używana jak w powyższym przykładzie, funkcja działa w tryb tekstowy
a plik jest otwarty tylko do odczytu. Rażony odpowiednik tego, co zrobiliśmy powyżej, to:
>>> fobject = Open ('LinuxConfig.txt ', „rt”)
Kopiuj Drugim argumentem funkcji jest tryb
. W tym przypadku, „rt”
, gdzie 'R'
oznacza Czytać
i 'T'
Określa, że działamy w trybie tekstowym. Możliwe jest również otwarcie plików w trybie binarnym, zastępując 'T'
z 'B'
: W tym przypadku treść bajtów, bez żadnego kodowania zostanie zwrócona. Od 'T'
to tryb domyślny, odtąd go pominiemy. Aby odczytać zawartość pliku, możemy na przykład użyć Czytać
metoda. Zwraca całą zawartość pliku jako ciąg:
>>> Fobject.Read () „Linuxconfig jest niesamowity!\N'
Kopiuj Kiedy działają w trybie odczytu, każda próba zapisywania pliku podniesie io.Nie wspierana
wyjątek:
>>> Fobject.Write („Linuxconfig jest niesamowity!') Traceback (najnowsze połączenie ostatnie): plik „”, wiersz 1, w io.Unsupportedoperation: nie jest to zapisane
Kopiuj Oczywiście nie jest to jedyny dostępny tryb. Zobaczmy innych.
Tryb zapisu - „W”
Podczas określania „W”
jako wartość tryb
argument otwarty
funkcja, jeśli plik istnieje, jest pierwsza kadłubowy
(cała jego treść jest odrzucana), a następnie jest otwarta do pisania; Jeśli plik nie istnieje, jest tworzony. W takim przypadku używamy pisać
Metoda obiektu pliku:
>>> fobject = Open ('LinuxConfig.txt ', „w”) >>> fobject.Napisz („Właśnie napisaliśmy do pliku!') 26 >>> Fobject.zamknąć()
Kopiuj Otworzyliśmy plik do pisania, niż użyliśmy pisać
Metoda obiektu pliku, który zapisuje ciąg i zwraca liczbę napisanych znaków, 26 W tym przypadku w końcu użyliśmy zamknąć
Metoda zamykania obiektu: Ten krok jest naprawdę ważny, ponieważ operacja zapisu staje się skuteczna dopiero po wypłukaniu treści pliku (zobaczymy znaczenie zamykania obiektu pliku na końcu samouczka). Jeśli teraz zbadamy treść pliku, zobaczymy, że jego poprzednia treść została zastąpiona i zawiera tylko ciąg:
„Właśnie napisaliśmy do pliku!'
Jak to się stało powyżej, jeśli spróbujemy wykonać operację niedozwoloną przez tryb działania, wyjątek jest podniesiony. W takim przypadku, jeśli spróbujemy odczytać zawartość pliku, otrzymujemy następujący wynik:
>>> fobject = Open ('LinuxConfig.txt ', „w”) >>> fobject.Read () Traceback (najnowsze połączenie ostatnie): plik „”, wiersz 1, w IO.Unsupportedoperation: Niezależna
Kopiuj Dołączenie do pliku: tryb „A”
Co jeśli chcemy dołączyć do pliku, zachowując jego bieżącą zawartość? Musimy użyć 'A'
(Dodatek) Tryb. Gdy ten tryb jest używany, jeśli plik istnieje, jest otwarty do pisania, a strumień jest ustawiony na końcu. W ten sposób poprzednia treść pliku zostanie zachowana. Jeśli plik nie istnieje, został utworzony:
>>> fobject = Open ('LinuxConfig.txt ', „a') >>> fobject.Write („Dodany tekst!') 14 >>> Fobject.zamknąć()
Kopiuj Otworzyliśmy plik w 'A'
tryb i zapisz ciąg „dołączony tekst” do pliku. Poprzednia treść nie została obcięta:
Linuxconfig jest niesamowity! Dołączony tekst!
Tryb „X” - Wyłączne stworzenie
Ten tryb otwarcia jest dostępny tylko w Python3. Kiedy jest używany, a FileExistSerror
jest podniesiony, jeśli plik już istnieje. Jeśli plik nie istnieje, jest tworzony i otwierany do pisania:
FileObject = Open ('LinuxConfig.txt ', „x”) traceback (najnowsze połączenie ostatnie): plik „”, wiersz 1, in, in, w FileExistSSerror: [errno 17] Plik istnieje: „Linuxconfig.tekst'
Kopiuj Za każdym razem, gdy coś piszemy, jest to dołączane do poprzedniej zawartości, dopóki nie zamkniemy obiektu pliku:
>>> FileObject = Open ('LinuxConfig1.txt ', „x') >>> fileObject.Write ('LinuxConfig jest ponownie niesamowity \ n') >>> FileObject.Write („Powtarzam: Linuxconfig jest niesamowity!\ n ') >>> FileObject.zamknąć()
Kopiuj Po uruchomieniu powyższego kodu nowa zawartość pliku będzie:
Linuxconfig jest niesamowity! Powtarzam: Linuxconfig jest niesamowity!
Postać „+”
Widzieliśmy podstawowe tryby, które można użyć z otwarty
Funkcja i jak działają. Dołączając „+”
Charakter dla każdego z nich, możemy uzyskać nowe zachowania.
Tryb „R+”
Podczas dołączania znaku „+” do trybu „R” („R+”) plik jest otwarty zarówno do czytania, jak i pisania; Wyjątek jest podniesiony, jeśli plik nie istnieje. Strumień jest ustawiony na początku pliku, więc jeśli coś zostanie napisane, zastąpi poprzednią treść. Jeśli jesteśmy w tym trybie, ale nadal chcemy dołączyć nową treść, rezerwując istnienie, musimy zmienić bieżącą pozycję za pomocą szukać
Metoda obiektu pliku przed napisaniem, w następujący sposób:
>>> FileObject = Open ('LinuxConfig.txt ', „r+”): >>> fileObject.szukaj (0,2) >>> FileObject.zapisz („ten tekst zostanie dołączony”) >>> FileObject.zamknąć()
Kopiuj szukać
Metoda przyjmuje dwa argumenty: Pierwszy to zrównoważyć
, druga to pozycja, z której należy obliczyć przesunięcie, gdzie 0
(Domyślnie, jeśli ten argument został pominięty) to początek pliku, 1
jest aktualnym przesunięciem i 2
to koniec pliku. W takim przypadku użyliśmy przesunięcia 0 od końca pliku, a zatem przechodząc do końca samego pliku. Zwróć uwagę, że w tym przypadku określenie niezerowego przesunięcia, podniosłoby io.Nie wspierana
wyjątek, ponieważ niemożliwe jest wykonanie niezerowej, końcowej poszukiwania.
Tryb „w+”
Ten tryb działa w ten sposób: plik zostanie otwarty zarówno do czytania, jak i pisania. Jeśli plik istnieje, jego treść zostanie obcięta, w przeciwnym razie plik zostanie utworzony. Podobnie jak w poprzednim przykładzie, możliwe będzie odczytanie i zapisanie pliku, jednak istnieją dwie duże różnice: pierwsze jest to, że zawartość pliku zostanie obcięta, gdy tylko zostanie otwarta (a nie, jeśli aktywujesz coś, napisz coś do to) po drugie, że plik zostanie utworzony, jeśli nie istnieje.
Tryb „A+”
Podczas określenia tego trybu za pomocą funkcji Open Python otrzymujemy następujące zachowanie: Podobnie jak w poprzednich przykładach plik jest otwarty zarówno do odczytu, jak i do pisania, strumień jest ustawiony na końcu pliku, więc każda nowa treść, którą jest dołączona do istniejącego.
Należy zauważyć dwie rzeczy: ponieważ strumień jest ustawiony na końcu pliku, jeśli spróbujemy użyć Czytać
Metoda w obiekcie pliku, aby uzyskać bieżącą zawartość, zwróci pusty ciąg. Aby móc odczytać treść, powinniśmy najpierw przejść na początek pliku, używając metody Seek w następujący sposób:
FileObject.szukaj (0)
Kopiuj Drugą, bardzo ważną rzeczą do zauważenia, jest to, że podczas korzystania z tego trybu, nawet jeśli przejdziemy na początek pliku, tak jak to zrobiliśmy w powyższym przykładzie, i wykonujemy zapis, istniejąca treść, której nie jest utracone: nowa treść jest zawsze dołączany.
Zamknięcie obiektu pliku
Po zakończeniu pracy z naszym obiektem pliku musimy zawsze pamiętać o jego zamknięciu z wielu powodów. W Primis, ponieważ niektóre operacje, takie jak pisanie, stają się skuteczne tylko wtedy, gdy obiekt pliku jest zamknięty, a jego treść jest spłukiwana, po drugie do bezpłatnych zasobów systemowych i jasności kodu. Istnieją dwa sposoby zamknięcia obiektu pliku: pierwszy to wywołanie zamknąć
metoda w obiekcie pliku, jak widzieliśmy powyżej. Drugi, jest używanie z
oświadczenie:
z otwartym („Linuxconfig.txt ', „r”) jako fileObject: content = fileObject.czytaj () # wykonaj potrzebne operacje
Kopiuj Co się stanie w tym przypadku? Korzystając z tego stwierdzenia, wyrażenie obok z
, w tym przypadku Otwórz („Linuxconfig.txt ', „r”)
, jest oceniany na obiekt pliku, który obsługuje protokół menedżera kontekstowego, ponieważ implementuje __Wchodzić__
I __Wyjście__
metody. Obiekt pliku jest następnie aliasowany FileObject
. Po wykonaniu kodu zawartego w bloku, __Wyjście__
Metoda obiektu pliku jest wywoływana automatycznie, a obiekt pliku jest zamknięty. Korzystanie z menedżera kontekstowego jest naprawdę przydatne, ponieważ obiekt będzie zawsze zamknięty, gdy tylko skończymy działać: jedna rzecz do zapamiętania.
Wnioski
W tym samouczku nauczyliśmy się, jak korzystać z wbudowanego Pythona otwarty
funkcja do utworzenia obiektu pliku, używanego do interakcji z plikiem. Widzieliśmy różne tryby, które można przekazać do funkcji i jak zmieniają zachowanie obiektu pliku. Na koniec widzieliśmy, dlaczego ważne jest, aby zawsze zamykać obiekt pliku po zakończeniu pracy z nim, jak możemy to zrobić za pomocą zamknąć
metoda i sposób, w jaki można to zrobić automatycznie, jeśli używamy z
oświadczenie i menedżer kontekstowy. Jak zawsze sugerowano, możesz skonsultować się z oficjalną dokumentacją w celu dalszej poprawy swojej wiedzy.
Zobacz także nasz bardziej obszerny samouczek Python, aby uzyskać więcej koncepcji związanych z Pythonem lub nasze pliki do czytania i pisania z Python Guide.
Powiązane samouczki Linux:
- Obsługa danych wejściowych użytkownika w skryptach Bash
- Mastering Bash Script Loops
- Linux Pliki konfiguracyjne: Top 30 Najważniejsze
- Big Data Manipulacja dla zabawy i zysku Część 1
- Manipulacja Big Data dla zabawy i zysku Część 3
- Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
- Rzeczy do zainstalowania na Ubuntu 20.04
- Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
- Manipulacja Big Data dla zabawy i zysku Część 2
- Jak montować obraz ISO na Linux
- « Jak wchodzić w interakcje z kontenerami Docker
- Jak zainstalować NextCloud na Ubuntu 18.04 Bionic Beaver Linux »