Jak obsługiwać pliki w Pythonie

W 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(’nazwa_pliku’,’tryb’).

  • Tutaj nazwa_pliku 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.

  • Tryb 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żyty w tym samouczku z to 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 go jako plik.
  • Następnie wywołujemy metodę read() w pliku.
  • Zmienna zawartość 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 nie zamknąłeś żadnego z nich.

Teraz nauczmy się lepszego sposobu otwierania plików za pomocą menedżerowie kontekstu. Poniższy fragment kodu pokazuje, jak możesz ich używać.

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że, 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ć metody seek() .

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 za każdym razem 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!

Używanie 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) NumPyn', '2) pandasn', '3) matplotlibn', 
'4) seabornn', '5) scikit-learnn', '6) BeautifulSoupn', 
'7) Scrapyn', '8) nltkn', '9) Bokehn', '10) statsmodelsn', '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 przez zawartość pliku — jeden wiersz na raz 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: Podczas korzystania z funkcji print() Pythona domyślnym separatorem jest znak nowej linii — „n”. Ale w oryginalnym pliku nie mamy tych nowych linii. Ustaw więc argument separatora na pusty ciąg: end = ”, aby wydrukować 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 na 50. Oznacza to, że zostanie wczytanych pierwszych 50 znaków z pliku, a także je wydrukujemy.
  • Teraz wywołaj metodę tell() na obiekcie pliku f. 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 „nowy_plik.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. Witaj, Pythonie! 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 dla 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 go 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 we/wy 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.