Commit 88004783 by Patryk Czarnik

pliki - odczyt

parent b3df2821
tekst = '''
Ala ma kota 0123.
Żółte żonkile na łące pełnej gąsek.
Zażółć gęślą jaźń.
'''
with open('nowy_utf.txt', mode='w', encoding='UTF-8') as plik1:
print(tekst, file=plik1)
with open('nowy_win.txt', mode='w', encoding='cp1250') as plik2:
print(tekst, file=plik2)
print('Gotowe')
from datetime import datetime
# Aby uzyskać dostęp do pliku, należy "otworzyć" ten plik za pomocą funkcji open:
# https://docs.python.org/3/library/functions.html#open
plik1 = open('plik.txt')
print('Otwarty plik:', plik1)
# Teraz na różne sposoby można odczytywać treść tego pliku:
# Operacja read() wczytuje całą treść pliku jako pojedynczy obiekt str:
tresc = plik1.read()
print('Cała treść ma rozmiar:', len(tresc))
print(tresc)
print("========")
# Aby pokazać Wam kolejne możliwości, muszę cofnąć się na początek pliku:
plik1.seek(0)
# Operacje pozwalające odczytać fragment pliku.
# W praktyce niezbyt często stosowane... (ale podaję, bo tak często wygląda obsługa plików w innych językach)
# Odczyt określonej liczby znaków:
s = plik1.read(3)
print(s)
# Gdy czytamy coś z pliku, to przesuwamy taki "kursor" wyznaczający pozycję w tym pliku
# Kolejne polecenia czytają dalszą treść
s = plik1.read(3)
print(s)
# Wczytanie całej linii.
# Jeśli już jakieś znaki z tej linii wczytywaliśmy, to będzie to doczytanie końca tej linii.
linia = plik1.readline()
print('linia1:', linia)
linia = plik1.readline()
print('linia2:', linia)
# W Pythonie operacje czytania linii (readline, readlines, iteracja po liniach)
# zwracają linie wraz ze znakiem końca linii \n
print("========")
# wróćmy na początek pliku...
plik1.seek(0)
# Wczytaj listę wszystkich linii:
linie = plik1.readlines()
print('Wszystkie linie:', linie)
# wróćmy na początek pliku...
plik1.seek(0)
print("========")
# Aby odczytać wszystkie linie i dla każdej "coś zrobić", nie musimy stosować
# żadnej z powyższych operacji, bo w Pythonie pętla for zastosowana do otwartego pliku
# przejdzie przez wszystkie linie tego pliku.
# Operacja strip jest tutaj po to, aby z końca każdej linii wykasować niepotrzebny znak \n
for linia in plik1:
print('Kolejna linia to:', linia.strip())
# Pliki należy zamykać, aby "zwolnić zasoby systemowe".
plik1.close()
print("========")
# NAJBARDZIEJ TYPOWY ZAPIS STOSOWANY W PYTHONIE
# wykorzystuje konstrukcję with, dzięki której pliki są automatycznie zamykane.
# Nie trzeba pisać close.
# Przy okazji zobaczmy, że funkcja open ma więcej parametrów.
# Podawanie kodowania znaków jest czasami konieczne.
with open('plik.txt', mode='r', encoding='UTF-8') as plik2:
# wszystkie operacje na pliku wpisujemy wewnątrz bloku with
for linia in plik2:
print('!', linia.strip())
# Gdy (po prostu redukując wcięcie) wyjdziemy z bloku with,
# to Python automatycznie zamknie ten plik.
print('\nPlik zamknięty.')
print('Koniec programu')
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment