***Operacje na plikach***
**Flagi plików**
'r' - plik tylko do odczytu, jeżeli plik nie istnieje wystąpi błąd
'w' - plik do zapisu, jeżeli nie istnieje to zostanie utworzony, zapisane w nim dane zostaną nadpisane
'a' - plik otwarty do zapisu - dane zostaną dopisane na końcu pliku, jeśli plik nie istnieje, to zostanie utworzony
'r+' - plik otwarty do odczytu i zapisu, jeżeli plik nie istnieje wystąpi błąd
'w+' - plik otwarty do odczytu i zapisu, jeżeli istnieją dane to zostaną nadpisane, jeżeli plik nie istnieje to zostanie utworzony
'a+' - plik otwarty do odczytu i zapisu - dane zostaną dopisane na końcu pliku,jeżeli plik nie istnieje, to zostanie utworzony
**Otwieranie i odczyt pliku**
plik=open('scieżka dostępu do plik.txt', 'flaga')
plik.close() #po zakończeniu należy zamknąć plik.
np.
plik=open('/home/master/Pulpit/plik.txt','r') #do zmiennej plik przypisujemy fizycznie istniejący plik - tylko do odczytu
print(plik.read()) #najprostsza forma odczytu pliku - czyta i wyświetla cały plik
print(plik.read(3)) #wyświetla 3 znaki
UWAGA - metoda read(), jak i readline() zapamiętuje pozycje ostatniego odczytu
*Wypisywanie pliku po linijce*
print(plik.readline()) #wypisuje linijkę
print(plik.readline(2)) #odczytuje 2 znaki z bieżącej linii
for linijka in plik:
print(linijka) #uwaga - pojawiają się dwa entery - jeden z pliku tekstowego, drugi generowany z printa.
*odczyt wszystkich linii*
print(plik.readlines()) #odczytuje wszystkie linijki z pliku
*wczytywanie linijek do listy*
linijki=plik.readlines() #zczytuje wszystkie linie do linijki tworząc listę
for linijka in linijki: #przechodzi całą listę linii i zapisuje do zmiennej linijka
print(linijka)
*pozbywanie się białych znaków*
Znaki białe, to te, które nie zawsze są widoczne dla nas, ale występują w tekście - są to spacje, tabulatory, entery.
linijka.strip() #usuwa białe znaki z tekstu (z linijki)
*Podział linijki na wyrazy*
Oddzielne wyrazy wyciągnięte z linii tekstu są dla nas bardziej przydatne niż długi łańcuch. Najłatwiej jest to zrobić poprzez podział linii i przekształcenie jej w listę stringów.
np.
linijka='Krótki napis testowy'
linijka.split() #dzieli linijkę - efekt - ['Krótki','napis','testowy']
Teraz to już można wszystko :)
ZADANIE
Utwórz (ręcznie) plik tekstowy imiona.abc z imionami uczniów twojej grupy (każde imię w nowej linii). Napisz program, który wczyta imiona z pliku i wyświetli je na ekranie posortowane alfabetycznie.
*metoda write()*
Należy pamiętać, że należy otworzyć plik do zapisu oraz najlepiej od razu do odczytu, aby można było sprawdzić, czy dział :)
plik=open('/home/master/Pulpit/zapis.txt','w+') #otwarcie pliku do zapisu i odczytu
Zapisujemy do pliku użyciem metody write()
np.
plik.write('Pierwsza linia')
plik.write('Druga linia')
plik.write('Trzecia linia')
lub
napis=input('Wpisz tekst, który chcesz zapisać do pliku\n')
plik.write(napis)
UWAGA
Metoda write nie wstawia znaku końca linii. Należy samodzielnie o to zadbać.
np.
plik.write('\nPierwsza linia\nDruga linia\nTrzecia linia\n')
*Sprawdzenie pozycji kursora w pliku*
tell()
np.
print('Teraz jesteśmy na pozycji',plik.tell())
*Ustawienie kursora na bieżącej pozycji w pliku*
seek()
plik.seek(0) #ustawiamy kursor w pozycji 0, czyli na początku pliku (w nawiasie podajemy nr znaku)
*metoda writelines()*
Metoda writelines() pozwala na przepisywanie danych do pliku z listy
np.
listanapisow=['Pierwsza linia\n','Druga linia\n','Trzecia linia\n]
plik.writelines(listanapisow)
**Zapis do pliku**
*metoda write()*
Należy pamiętać, że należy otworzyć plik do zapisu oraz najlepiej od razu do odczytu, aby można było sprawdzić, czy dział :)
plik=open('/home/master/Pulpit/zapis.txt','w+') #otwarcie pliku do zapisu i odczytu
Zapisujemy do pliku użyciem metody write()
np.
plik.write('Pierwsza linia')
plik.write('Druga linia')
plik.write('Trzecia linia')
lub
napis=input('Wpisz tekst, który chcesz zapisać do pliku\n')
plik.write(napis)
UWAGA
Metoda write nie wstawia znaku końca linii. Należy samodzielnie o to zadbać.
np.
plik.write('\nPierwsza linia\nDruga linia\nTrzecia linia\n')
*Sprawdzenie pozycji kursora w pliku*
tell()
np.
print('Teraz jesteśmy na pozycji',plik.tell())
*Ustawienie kursora na bieżącej pozycji w pliku*
seek()
plik.seek(0) #ustawiamy kursor w pozycji 0, czyli na początku pliku (w nawiasie podajemy nr znaku)
*metoda writelines()*
Metoda writelines() pozwala na przepisywanie danych do pliku z listy
np.
listanapisow=['Pierwsza linia\n','Druga linia\n','Trzecia linia\n]
plik.writelines(listanapisow)
INNE
*Sprawdzanie czy plik istnieje na dysku*
import os
if os.path.isfile(plik.txt):
print(plik.read())
else:
print('plik nie istnieje')
*Zamiana znaków
linia = linia.replace("\n", "") # usuwamy znaki końca linii
*Sprawdzanie czy plik istnieje na dysku*
import os
if os.path.isfile(plik.txt):
print(plik.read())
else:
print('plik nie istnieje')
*Zamiana znaków
linia = linia.replace("\n", "") # usuwamy znaki końca linii
*Ustawienie kodowania
linia = linia.decode("utf-8") # odczytujemy znaki jako utf-8
linia = linia.decode("utf-8") # odczytujemy znaki jako utf-8
ZADANIE
Palindromy