Zasada obsługi plików tekstowych jest bardzo prosta. Na samym początku warto upewnić się, że podajemy poprawną ścieżkę do pliku, na którym chcemy pracować.
import os
if os.path.exists("plik.txt"): # sprawdź, czy istnieje plik plik.txt
print("Plik \"plik.txt\" istnieje i jest gotowy do pracy")
else:
print("Plik pod wskazaną ścieżką nie istnieje")
os.path.exists("względna ścieżka do pliku tektowego") — jeśli plik znajduje się w tym samym miejscu co plik z kodem źródłowym, to wystarczy wpisać tylko nazwę pliku tekstowego wraz z jego rozszerzeniem.
Plik możemy otworzyć w jednym z trzech trybów:
plik = open("dane.txt", "r") # otwieramy plik w trybie do odczytu (r - read)
print(plik.read()) # wypisanie zawartości pliku
plik.close() # zamknięcie pliku
Funkcja open() otwiera plik dane.txt w trybie do czytania. Obiekt plik zostaje skojarzony z plikiem dane.txt i od tego momentu możemy użyć metody read() aby pobrać zawartość pliku i np. wyświetlić ją na ekranie monitora.
Pamiętaj, że po skończonej pracy na pliku należy go zamknąć metodą close(), w przeciwnym razie może to prowadzić do problemów związanych z zasobami i niewłaściwym zwalnianiem pamięci.
with open("dane.txt", "r") as plik:
print(plik.read())
W powyższym przykładzie używamy bloku with, który automatycznie zarządza zamknięciem pliku po zakończeniu bloku. Nie musimy wywoływać metody close(). Blok with jest często używany do obsługi plików w Pythonie, ponieważ gwarantuje właściwe zarządzanie zasobami.
with open("dane.txt", "r") as plik:
for linia in plik:
print(linia)
with open("out.txt", "w") as plik:
plik.write("Ala ma kota")
with open("out.txt", "r") as plik:
print(plik.read()) # Ala ma kota
Jeśli plik nie istnieje, to zostanie on utworzony, w przeciwnym razie dane z istniejącego pliku zostaną nadpisane. Do wpisania danych do pliku użyjemy metody write(dane do zapisu)
with open("out.txt", "w") as plik: # otwarcie pliku w trybie do zapisu
plik.write("Ala ma kota") # utworzenie pliku i zapisanie w nim tekstu "Ala ma kota"
with open("out.txt", "a") as plik: # otwarcie pliku w trybie do dopisania
plik.write("\nkot ma ale")
with open("out.txt", "r") as plik:
print(plik.read()) # Ala ma kota
# kot ma ale
W pliku dane.txt znajduje się 1000 par liczb naturalnych dodatnich nie większych niż 1050. Napisz program w języku Python, który wypisze wszystkie pary liczb względnie pierwszych oraz poda ilość tych liczb.
import math
cnt = 0
with open("dane.txt", "r") as plik: # otwarcie pliku w trybie do zapisu
for i in range(1000):
a, b = plik.readline().split()
if math.gcd(int(a), int(b)) == 1: # jeśli największy wspólny dzielnik jest równy 1
print(a, b)
cnt += 1 # zliczamy wystąpienia par liczb względnie pierwszych
print(cnt)