Rozdział 15 · Python i akta

Linia po linijce

Często wygodniej jest przetwarzać plik linijka po linii niż cały plik.

Czytanie całego pliku naraz nie zawsze jest wygodne — szczególnie jeśli plik jest duży. Często konieczniejsze jest jego przetworzenie wiersz po wierszu:

stroka_za_strokoj.py
with open("spisok.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line.strip())
Co dokładnie usuwa strip()
Każdy łańcuch znaków pliku, może poza ostatnim, kończy się niewidzialnym sygnałem \n. Ale .strip() (Rozdział 8) Oczyszcza wszystko znaków białych spacji po obu stronach linii — spacji, tabulatorów i podziałów — nie tylko tego jednego przelewu linii. Jeśli dane w pliku mogą sensownie zaczynać się lub kończyć spacji, ślepa .strip() może je niezauważalnie uszkodzić. Jeśli celem jest usunięcie przewodu końcowego i nic więcej, użyj line.rstrip("\\n").
Debug Lab 1: strip() usuwa więcej, niż się wydaje
citaty.py
with open("citaty.txt", "w", encoding="utf-8") as file:
    file.write(„ważny cytat z odstępami wokół krawędzi \n”)

with open("citaty.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(f"[{line.strip()}]")
[важная цитата с пробелами по краям]
Co widać na ekranie

Program wyświetlił cytat bez początkowych i końcowych spacji — mimo że autor celowo je umieścił. .strip() usuwa spacje na brzegach razem z przejściem do nowej linii i nie rozróżnia „losowego śmiecia” od „zamierzonej spacji”: po prostu usuwa wszystkie białe znaki na obu końcach linii.

Poprawiony kod
citaty_fixed.py
with open("citaty.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(f"[{line.rstrip(chr(10))}]")   # Usuń tylko linię podania

Wszystkie wiersze naraz — w liście

readlines.py
with open("spisok.txt", "r", encoding="utf-8") as file:
    lines = file.readlines()

print(len(lines), „linie”)
print(lines[0])   # pierwszy łańcuch znaków - razem z twoim \n
Przerwy w liniach to nie tylko \n
W Python pliki tekstowe są odczytywane w trybie uniwersalnych podziałów linii, nawet jeśli linie są oddzielone sekwencją na dysku \r\n (jak historycznie akceptowano w Windows), podczas czytania w trybie tekstowym, Python daje ci \n. Szczegóły dotyczące trybów tekstowych i binarnych dostępne są w wersji 15.17.
Praktyka: Czytanie plików linia po linijce
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →