Python 3 - We / wy plików

W tym rozdziale omówiono wszystkie podstawowe funkcje I / O dostępne w Pythonie 3. Więcej funkcji można znaleźć w standardowej dokumentacji języka Python.

Drukowanie na ekranie

Najprostszym sposobem uzyskania wyniku jest użycie instrukcji print , w której można przekazać zero lub więcej wyrażeń oddzielonych przecinkami. Ta funkcja konwertuje przekazane wyrażenia na ciąg i zapisuje wynik na standardowe wyjście w następujący sposób -

#!/usr/bin/python3

print ("Python is really a great language,", "isn't it?")

Daje to następujący wynik na ekranie standardowym -

Python is really a great language, isn't it?

Czytanie danych z klawiatury

Python 2 ma dwie wbudowane funkcje do odczytu danych ze standardowego wejścia, które domyślnie pochodzi z klawiatury. Te funkcje sąinput() i raw_input()

W Pythonie 3 funkcja raw_input () jest przestarzała. Ponadto funkcje input () odczytują dane z klawiatury jako ciąg znaków, niezależnie od tego, czy są one ujęte w cudzysłów („” lub „”), czy nie.

Funkcja wejściowa

Plik input([prompt]) function jest równoważne z raw_input, z tą różnicą, że zakłada, że ​​dane wejściowe są prawidłowym wyrażeniem Pythona i zwraca oszacowany wynik do Ciebie.

#!/usr/bin/python3

>>> x = input("something:")
something:10

>>> x
'10'

>>> x = input("something:")
something:'10' #entered data treated as string with or without ''

>>> x
"'10'"

Otwieranie i zamykanie plików

Do tej pory czytałeś i zapisywałeś na standardowe wejście i wyjście. Teraz zobaczymy, jak używać rzeczywistych plików danych.

Python domyślnie udostępnia podstawowe funkcje i metody niezbędne do manipulowania plikami. Większość operacji na plikach można wykonać za pomocą rozszerzeniafile obiekt.

Otwarta funkcja

Zanim będziesz mógł odczytać lub zapisać plik, musisz go otworzyć za pomocą wbudowanej funkcji open () języka Python. Ta funkcja tworzy plikfile obiekt, który zostałby użyty do wywołania innych powiązanych z nim metod obsługi.

Składnia

file object = open(file_name [, access_mode][, buffering])

Oto szczegóły parametrów -

  • file_name - Argument nazwa_pliku to ciąg znaków zawierający nazwę pliku, do którego chcesz uzyskać dostęp.

  • access_mode- access_mode określa tryb, w jakim plik ma zostać otwarty, tj. Czytać, zapisywać, dołączać itd. Pełna lista możliwych wartości jest podana poniżej w tabeli. Jest to parametr opcjonalny, a domyślny tryb dostępu do plików to Read (r).

  • buffering- Jeśli wartość buforowania jest ustawiona na 0, buforowanie nie jest wykonywane. Jeśli wartość buforowania wynosi 1, buforowanie linii jest wykonywane podczas dostępu do pliku. Jeśli określisz wartość buforowania jako liczbę całkowitą większą niż 1, operacja buforowania zostanie wykonana ze wskazanym rozmiarem buforu. Jeśli wartość ujemna, rozmiar bufora jest domyślnym systemem (zachowanie domyślne).

Oto lista różnych trybów otwierania pliku -

Sr.No. Tryb i opis
1

r

Otwiera plik tylko do odczytu. Wskaźnik pliku jest umieszczany na początku pliku. To jest tryb domyślny.

2

rb

Otwiera plik do odczytu tylko w formacie binarnym. Wskaźnik pliku jest umieszczany na początku pliku. To jest tryb domyślny.

3

r+

Otwiera plik do odczytu i zapisu. Wskaźnik pliku umieszczony na początku pliku.

4

rb+

Otwiera plik do odczytu i zapisu w formacie binarnym. Wskaźnik pliku umieszczony na początku pliku.

5

w

Otwiera plik tylko do zapisu. Zastępuje plik, jeśli istnieje. Jeśli plik nie istnieje, tworzy nowy plik do zapisu.

6

wb

Otwiera plik do zapisu tylko w formacie binarnym. Zastępuje plik, jeśli istnieje. Jeśli plik nie istnieje, tworzy nowy plik do zapisu.

7

w+

Otwiera plik do zapisu i odczytu. Zastępuje istniejący plik, jeśli plik istnieje. Jeśli plik nie istnieje, tworzy nowy plik do odczytu i zapisu.

8

wb+

Otwiera plik do zapisu i odczytu w formacie binarnym. Zastępuje istniejący plik, jeśli plik istnieje. Jeśli plik nie istnieje, tworzy nowy plik do odczytu i zapisu.

9

a

Otwiera plik do dołączenia. Wskaźnik pliku znajduje się na końcu pliku, jeśli plik istnieje. Oznacza to, że plik jest w trybie dołączania. Jeśli plik nie istnieje, tworzy nowy plik do zapisu.

10

ab

Otwiera plik do dołączenia w formacie binarnym. Wskaźnik pliku znajduje się na końcu pliku, jeśli plik istnieje. Oznacza to, że plik jest w trybie dołączania. Jeśli plik nie istnieje, tworzy nowy plik do zapisu.

11

a+

Otwiera plik do dołączania i odczytu. Wskaźnik pliku znajduje się na końcu pliku, jeśli plik istnieje. Plik otwiera się w trybie dołączania. Jeśli plik nie istnieje, tworzy nowy plik do odczytu i zapisu.

12

ab+

Otwiera plik do dołączania i odczytu w formacie binarnym. Wskaźnik pliku znajduje się na końcu pliku, jeśli plik istnieje. Plik otwiera się w trybie dołączania. Jeśli plik nie istnieje, tworzy nowy plik do odczytu i zapisu.

Plik Object Attributes

Po otwarciu pliku i utworzeniu jednego obiektu pliku można uzyskać różne informacje związane z tym plikiem.

Oto lista wszystkich atrybutów związanych z obiektem pliku -

Sr.No. Atrybut i opis
1

file.closed

Zwraca true, jeśli plik jest zamknięty, false w przeciwnym razie.

2

file.mode

Zwraca tryb dostępu, w którym plik został otwarty.

3

file.name

Zwraca nazwę pliku.

Note - atrybut softspace nie jest obsługiwany w Pythonie 3.x

Przykład

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)
print ("Closed or not : ", fo.closed)
print ("Opening mode : ", fo.mode)
fo.close()

Daje to następujący wynik -

Name of the file:  foo.txt
Closed or not :  False
Opening mode :  wb

Metoda close ()

Metoda close () obiektu plikowego usuwa wszelkie niepisane informacje i zamyka obiekt plik, po czym nie można już pisać.

Python automatycznie zamyka plik, gdy obiekt odniesienia pliku zostanie ponownie przypisany do innego pliku. Dobrą praktyką jest używanie metody close () do zamykania pliku.

Składnia

fileObject.close();

Przykład

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)

# Close opened file
fo.close()

Daje to następujący wynik -

Name of the file:  foo.txt

Czytanie i pisanie plików

Obiekt file zapewnia zestaw metod dostępu, które ułatwiają nam życie. Zobaczylibyśmy, jak używaćread() i write() metody odczytu i zapisu plików.

Metoda write ()

Plik write()metoda zapisuje dowolny ciąg do otwartego pliku. Należy zauważyć, że ciągi znaków Pythona mogą zawierać dane binarne, a nie tylko tekst.

Metoda write () nie dodaje znaku nowego wiersza („\ n”) na końcu ciągu -

Składnia

fileObject.write(string);

Tutaj przekazany parametr to treść, która ma zostać zapisana w otwartym pliku.

Przykład

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "w")
fo.write( "Python is a great language.\nYeah its great!!\n")

# Close opend file
fo.close()

Powyższa metoda utworzy plik foo.txt i zapisze określoną zawartość w tym pliku, a na koniec zamknie ten plik. Gdybyś otworzył ten plik, miałby następującą zawartość -

Python is a great language.
Yeah its great!!

Metoda read ()

Plik read()odczytuje ciąg z otwartego pliku. Należy zauważyć, że łańcuchy znaków Pythona mogą zawierać dane binarne. oprócz danych tekstowych.

Składnia

fileObject.read([count]);

Tutaj przekazywany parametr to liczba bajtów do odczytania z otwartego pliku. Ta metoda zaczyna czytać od początku pliku i jeśli brakuje count , wtedy próbuje odczytać jak najwięcej, być może do końca pliku.

Przykład

Weźmy plik foo.txt , który stworzyliśmy powyżej.

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)

# Close opened file
fo.close()

Daje to następujący wynik -

Read String is :  Python is

Plik Pozycje

Metoda tell () informuje o bieżącej pozycji w pliku; innymi słowy, następny odczyt lub zapis nastąpi z taką liczbą bajtów od początku pliku.

Metoda seek (offset [, from]) zmienia bieżącą pozycję pliku. Plikoffsetargument wskazuje liczbę bajtów do przeniesienia. Plikfrom argument określa położenie odniesienia, z którego mają zostać przeniesione bajty.

Jeśli from jest ustawione na 0, początek pliku jest używany jako pozycja odniesienia. Jeśli jest ustawiony na 1, aktualna pozycja jest używana jako pozycja odniesienia. Jeśli jest ustawiony na 2, to koniec pliku będzie traktowany jako punkt odniesienia.

Przykład

Weźmy plik foo.txt , który stworzyliśmy powyżej.

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)

# Check current position
position = fo.tell()
print ("Current file position : ", position)

# Reposition pointer at the beginning once again
position = fo.seek(0, 0)
str = fo.read(10)
print ("Again read String is : ", str)

# Close opened file
fo.close()

Daje to następujący wynik -

Read String is :  Python is
Current file position :  10
Again read String is :  Python is

Zmiana nazwy i usuwanie plików

Pyton os Moduł udostępnia metody ułatwiające wykonywanie operacji przetwarzania plików, takich jak zmiana nazwy i usuwanie plików.

Aby użyć tego modułu, musisz go najpierw zaimportować, a następnie możesz wywołać wszelkie powiązane funkcje.

Metoda rename ()

Plik rename() Metoda przyjmuje dwa argumenty, bieżącą nazwę pliku i nową nazwę pliku.

Składnia

os.rename(current_file_name, new_file_name)

Przykład

Poniżej znajduje się przykład zmiany nazwy istniejącego pliku test1.txt -

#!/usr/bin/python3
import os

# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )

Metoda remove ()

Możesz użyć remove() metody usuwania plików, podając jako argument nazwę pliku do usunięcia.

Składnia

os.remove(file_name)

Przykład

Poniżej znajduje się przykład usuwania istniejącego pliku test2.txt -

#!/usr/bin/python3
import os

# Delete file test2.txt
os.remove("text2.txt")

Katalogi w Pythonie

Wszystkie pliki są zawarte w różnych katalogach, a Python nie ma problemu z ich obsługą. Plikos moduł ma kilka metod, które pomagają tworzyć, usuwać i zmieniać katalogi.

Metoda mkdir ()

Możesz użyć mkdir() metoda osmoduł do tworzenia katalogów w bieżącym katalogu. Musisz podać argument do tej metody, który zawiera nazwę katalogu, który ma zostać utworzony.

Składnia

os.mkdir("newdir")

Przykład

Poniżej znajduje się przykład tworzenia testu katalogu w bieżącym katalogu -

#!/usr/bin/python3
import os

# Create a directory "test"
os.mkdir("test")

Metoda chdir ()

Aby zmienić bieżący katalog, możesz użyć metody chdir () . Metoda chdir () przyjmuje argument, którym jest nazwa katalogu, który ma być katalogiem bieżącym.

Składnia

os.chdir("newdir")

Przykład

Poniżej znajduje się przykład przejścia do katalogu „/ home / newdir” -

#!/usr/bin/python3
import os

# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")

Metoda getcwd ()

Plik getcwd() metoda wyświetla bieżący katalog roboczy.

Składnia

os.getcwd()

Przykład

Poniżej znajduje się przykład, aby podać bieżący katalog -

#!/usr/bin/python3
import os

# This would give location of the current directory
os.getcwd()

Metoda rmdir ()

Plik rmdir() metoda usuwa katalog, który jest przekazywany jako argument w metodzie.

Przed usunięciem katalogu należy usunąć całą jego zawartość.

Składnia

os.rmdir('dirname')

Przykład

Poniżej znajduje się przykład usuwania katalogu „/ tmp / test”. Wymagane jest podanie w pełni kwalifikowanej nazwy katalogu, w przeciwnym razie szukałby tego katalogu w bieżącym katalogu.

#!/usr/bin/python3
import os

# This would  remove "/tmp/test"  directory.
os.rmdir( "/tmp/test"  )

Metody związane z plikami i katalogami

Istnieją trzy ważne źródła, które zapewniają szeroką gamę narzędzi do obsługi plików i katalogów w systemach operacyjnych Windows i Unix oraz do manipulowania nimi. Są następujące -

  • Metody obiektów plików

    Plik file obiekt zapewnia funkcje do manipulowania plikami.

  • Metody obiektów systemu operacyjnego

    Zapewnia metody przetwarzania plików i katalogów.