Jak obsługiwać pliki w Pythonie
Opublikowany: 2022-03-11W każdym języku programowania ważnym aspektem jest obsługa plików. Python obsługuje również pracę z plikami w różnych trybach — takich jak odczytywanie i zapisywanie do plików i nie tylko.
Pod koniec tego samouczka będziesz w stanie:
- otwierać i czytać pliki w Pythonie,
- czytać wiersze z pliku tekstowego,
- pisać i dołączać do plików oraz
- używaj menedżerów kontekstu do pracy z plikami w Pythonie.
Jak czytać plik w Pythonie
Aby otworzyć plik w Pythonie, możesz użyć ogólnej składni: open('file_name','mode')
.
- Tutaj
file_name
to nazwa pliku.
Uwaga: Jeśli plik, który chcesz otworzyć, znajduje się w bieżącym katalogu roboczym, możesz podać tylko nazwę pliku. Jeśli znajduje się w innym folderze w twoim środowisku pracy, powinieneś podać ścieżkę do pliku.
-
mode
parametrów określa tryb, w którym chcesz otworzyć plik.
Domyślnym trybem otwierania pliku jest odczyt — oznaczony literą
'r'
. Jednak zalecaną praktyką jest jawne określenie trybu.
Zanim zaczniemy, spójrzmy na plik lib.txt
, którego użyjemy w tym przykładzie.
Pobierz plik tekstowy i kod użyte w tym samouczku z tego repozytorium GitHub.

Poniższy fragment kodu pokazuje, jak otworzyć plik tekstowy 'lib.txt'
w Pythonie za pomocą funkcji open()
i odczytać jego zawartość.
file = open('lib.txt','r') contents = file.read() print(contents) file.close() # Output Hello, there! Here are a few helpful Python libraries: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels
W powyższym przykładzie
- Funkcja
open()
zwraca obiekt plikowy, a my wybieramy wywołanie gofile
. - Następnie wywołujemy metodę
read()
wfile
. - Zmienna
contents
zawiera teraz zawartość pliku. I drukujemy to. - Wreszcie zamykamy plik.
Jeśli jednak zapomnisz zamknąć plik, możliwe będzie marnowanie zasobów. Jeśli pracujesz z dużą liczbą takich plików, zużycie pamięci może być znaczne. Dzieje się tak, ponieważ otworzyłeś kilka plików, ale żadnego z nich nie zamknąłeś.
Teraz nauczmy się lepszego sposobu otwierania plików za pomocą menedżerowie kontekstu. Poniższy fragment kodu pokazuje, jak z nich korzystać.
with open('lib.txt','r') as f: contents = f.read() print(contents)
Używając menedżerów kontaktów do pracy z plikami, nie musisz używać metody close()
. Pliki są automatycznie zamykane po zakończeniu operacji we/wy.
Jak czytać wiersze z pliku w Pythonie?
W naszym przykładowym pliku tekstowym mieliśmy tylko kilka wierszy. Wczytanie całej zawartości pliku na raz nie stanowiło więc problemu.

Jednak gdy musisz czytać duże pliki, użycie metody read()
, jak pokazano powyżej, może nie być zbyt wydajne.
W rzeczywistości, jeśli plik tekstowy ma bardzo duży rozmiar, wkrótce może zabraknąć pamięci. Dlatego możesz chcieć czytać tylko do odczytu wiersze z pliku tekstowego, a dowiesz się, jak to zrobić w tej sekcji.
Używanie metody readline() Pythona do odczytywania wierszy z pliku
Metoda readline()
odczytuje z pliku jeden wiersz na raz.
Uruchom następujący fragment kodu.
with open('lib.txt','r') as f: line = f.readline() print(line) line = f.readline() print(line) # Output Hello, there! Here are a few helpful Python libraries:
Widać, że po pierwszym wywołaniu metody readline()
drukowany jest pierwszy wiersz pliku. Drugie wywołanie metody readline()
zwraca drugi wiersz w pliku.
Dzieje się tak, ponieważ po pierwszym wywołaniu metody wskaźnik pliku znajduje się na początku drugiego wiersza.
W Pythonie możesz użyć metody
tell()
, aby uzyskać aktualną lokalizację wskaźnika pliku. Aby przenieść wskaźnik pliku do określonej lokalizacji, możesz użyć metodyseek()
.
W poniższym fragmencie kodu używamy f.seek(0)
po pierwszym wywołaniu metody. Przenosi to wskaźnik pliku na początek pliku tekstowego. Dlatego w obu przypadkach drukowany jest pierwszy wiersz pliku.
with open('lib.txt','r') as f: line = f.readline() print(line) f.seek(0) line = f.readline() print(line) # Output Hello, there! Hello, there!
Korzystanie z metody readlines() Pythona do odczytywania wierszy z pliku
Istnieje inna, ściśle powiązana metoda o nazwie readlines()
.
Po uruchomieniu poniższego fragmentu kodu zobaczysz, że metoda readlines()
zwraca listę wszystkich wierszy w pliku.
with open('lib.txt','r') as f: lines = f.readlines() print(lines) # Output ['Hello, there!\n', 'Here are a few helpful Python libraries:\n', '1) NumPy\n', '2) pandas\n', '3) matplotlib\n', '4) seaborn\n', '5) scikit-learn\n', '6) BeautifulSoup\n', '7) Scrapy\n', '8) nltk\n', '9) Bokeh\n', '10) statsmodels\n', '\n']
Używanie Pythona dla pętli do czytania linii z pliku
Aby wczytać wiersze z pliku tekstowego, możesz również użyć pętli for
.

Gdy masz już obiekt plikowy, możesz użyć pętli for
do iteracji zawartości pliku — jeden wiersz po wierszu i wydrukowania ich, jak pokazano poniżej. Zauważ, że uzyskujemy dostęp tylko do jednej linii na raz i nie czytamy całej zawartości pliku.
with open('lib.txt','r') as f: for line in f: print(line, end='')
Uwaga : Kiedy używasz funkcji
print()
Pythona, domyślnym separatorem jest znak nowej linii — znak'\n'
. Ale w oryginalnym pliku nie mamy tych nowych linii. Ustaw więc argument separatora na pusty ciąg:end = ''
, aby wyświetlić zawartość pliku w takiej postaci, w jakiej jest.
Jak czytać fragmenty treści z pliku w Pythonie?
W Pythonie możesz również wybrać czytanie zawartości pliku w postaci małych fragmentów.
Przeczytaj poniższy kod:
- Tutaj ustawiamy
chunk_size
na50
. Oznacza to, że zostanie wczytanych pierwszych 50 znaków z pliku, a także je wydrukujemy.
- Teraz wywołaj metodę
tell()
na obiekcie plikuf
. Widać, że wskaźnik pliku znajduje się teraz na pozycji 51 — co jest zgodne z oczekiwaniami.
chunk_size = 50 with open('lib.txt','r') as f: chunk = f.read(chunk_size) print(chunk) current = f.tell() print(f"Current position of file pointer: {current}") # Output Hello, there! Here are a few helpful Python librar Current position of file pointer: 51
Możesz również użyć tej techniki, aby odczytać cały plik w postaci małych fragmentów.
Poniższy fragment kodu pokazuje, jak możesz to zrobić.
chunk_size = 50 with open('lib.txt','r') as f: chunk = f.read(chunk_size) print(chunk,end='') while(len(chunk)>0): chunk = f.read(chunk_size) print(chunk,end='') # Output Hello, there! Here are a few helpful Python libraries: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels
Tutaj używamy pętli while
do odczytania zawartości pliku. Odczytujemy zawartość pliku w kawałku o rozmiarze 50, aż dotrzemy do końca pliku.
Jak pisać do pliku w Pythonie
Aby pisać do pliku tekstowego w Pythonie, powinieneś otworzyć go w trybie zapisu — określając 'w'
.

Poniższy fragment kodu pokazuje, jak to zrobić.
with open('new_file.txt','w') as f: f.write('Hello, Python!')
Zobaczysz, że w twoim katalogu roboczym został utworzony 'new_file.txt'
.
Teraz ponownie uruchom powyższą komórkę kodu.
W swoim terminalu uruchom następujące polecenie:
cat new_file.txt # Output: Hello, Python!
W idealnym przypadku zapisaliśmy do pliku dwa razy. Hello, Python!
powinien zostać wydrukowany dwukrotnie, tak?
Ale zobaczysz, że został wydrukowany tylko raz. Dzieje się tak dlatego, że kiedy otwierasz plik w trybie zapisu ( w
), zasadniczo nadpisujesz zawartość pliku nową zawartością.
Jeśli chcesz dodać na końcu pliku bez nadpisywania istniejącej zawartości, powinieneś otworzyć plik w trybie dołączania . Zobaczysz, jak to zrobić w następnej sekcji.
Jak dołączyć do pliku w Pythonie
Jeśli chcesz dołączyć zawartość do pliku — bez nadpisywania, otwórz go w trybie dołączania .
Aby to zrobić, użyj ` 'a'
— a for append — i wyraźnie określ tryb.
Następnie dwukrotnie uruchom następującą komórkę kodu.
with open('new_file.txt','a') as f: f.write('Hello, Python!')
Zwróć uwagę, że tekst jest teraz drukowany dwukrotnie, gdy dołączyliśmy do pliku.
cat new_file.txt # Output: Hello, Python!Hello, Python!
Wniosek
Podsumujmy szybko, co omówiliśmy w tym samouczku.
- Poznałeś już typowe operacje wejścia/wyjścia na plikach, takie jak odczytywanie, zapisywanie i dołączanie do pliku.
- Ponadto nauczyłeś się również, jak używać metody seek() do przeniesienia wskaźnika pliku do określonej pozycji i
- jak używać metody tell() do pobrania aktualnej pozycji wskaźnika pliku.
Mam nadzieję, że ten samouczek okazał się pomocny. Teraz, gdy nauczyłeś się pracować z plikami tekstowymi w Pythonie, dowiedz się, jak pracować z plikami JSON w Pythonie.
Związane z:
Sprawdź długość listy w Pythonie w 3 krokach.