Praca z plikami w Python

Python pozwala na odczyt, zapis i modyfikację plików tekstowych oraz binarnych. Operacje te realizowane są głównie za pomocą wbudowanej funkcji open().


1. Otwieranie plików

Składnia:

Tryby otwierania plików:

Tryb Opis
"r" odczyt (read), plik musi istnieć
"w" zapis (write), tworzy nowy plik lub nadpisuje istniejący
"a" dopisywanie (append), dodaje na końcu pliku
"x" tworzy nowy plik, błąd jeśli plik istnieje
"b" tryb binarny (np. "rb", "wb")
"+" odczyt i zapis (np. "r+")

2. Odczyt pliku

2.1. Metoda read()

  • Odczytuje cały plik jako jeden string:
  • Użycie with zapewnia automatyczne zamknięcie pliku.

2.2. Metoda readline()

  • Odczytuje po jednej linii:

2.3. Metoda readlines()

  • Zwraca listę wszystkich linii:

3. Zapis do pliku

3.1. Metoda write()

3.2. Metoda writelines()

  • Zapisuje listę stringów:
  • Pamiętaj, aby samodzielnie dodawać znaki nowej linii (\n).

4. Tryb dopisywania (append)

  • Dodaje zawartość na końcu pliku, nie nadpisuje istniejącej:

5. Praca z plikami binarnymi

  • Tryby "rb", "wb", "ab" służą do pracy z obrazami, dźwiękiem itp.

6. Pozycjonowanie w pliku

6.1. seek(offset, whence)

  • Ustawia wskaźnik odczytu/zapisu w pliku:
  • whence domyślnie 0 (początek), 1 (aktualna pozycja), 2 (koniec pliku).

6.2. tell()

  • Zwraca aktualną pozycję wskaźnika w pliku:

7. Automatyczne zamykanie pliku

  • Najbezpieczniejsza forma to użycie with, które automatycznie zamyka plik po wyjściu z bloku:

8. Obsługa wyjątków przy pracy z plikami


9. Zaawansowane techniki

9.1. Odczyt pliku po kawałkach

9.2. Liczenie linii, słów i znaków

9.3. Modyfikacja pliku

  • W Pythonie nie można modyfikować pliku w miejscu – trzeba odczytać, zmienić i zapisać ponownie:

10. Dobre praktyki

  • Zawsze używaj with dla bezpieczeństwa.
  • Zamykaj pliki po skończonej pracy (file.close() jeśli nie używasz with).
  • Obsługuj wyjątki (np. FileNotFoundError, IOError).
  • Przy dużych plikach odczytuj je po kawałkach lub liniami, aby oszczędzić pamięć.
  • Do plików binarnych używaj trybu "b".