Python zajęcia 8
🗂️ Obsługa plików w systemie Windows oparta na systemie plików NTFS (New Technology File System)
Nawigacja po folderach
- C:\Users\Bob\Documents\mojdoc.txt – pełna ścieżka bezwzględna.
- ..\mojdoc.txt – ścieżka względna, .. oznacza "jeden poziom wyżej" w strukturze folderów (skrót do folderu nadrzędnego czyli "rodzica")
📝 Otwieranie plików w Pythonie:
plik_zawartosc = open('mojplik.txt', 'r')
'r' oznacza read — tryb odczytu
🧩 Schemat: nasza_nazwa = open(nazwa_pliku, tryb)
🧾 1. Wczytanie całej zawartości naraz
plik_zawartosc = open('mojplik.txt', 'r')
print(plik_zawartosc.read())
📄 2. Wczytywanie linia po linii
plik_zawartosc = open('mojplik.txt', 'r')
for linijka in plik_zawartosc:
print(linijka)
🛠️ Wczytywanie z możliwością edycji
➕ jeśli plik nie istnieje to zostanie on utworzony,
➕aby czytać i pisać w tym samym czasie - "r+"
plik_zawartosc = open('mojplik.txt', 'w')
plik_zawartosc.write('Nowa zawartość')
plik_zawartosc.close()
🧙♂️ Magiczne “with” - bez dodawania .close()
with open('mojplik.txt','w') as plik_zawartosc:
plik_zawartosc.write('Nowa zawartość')
with open('mojplik.txt','w') as plik_zawartosc:
plik_zawartosc.write('Nowa zawartość')
📄 Tryb tekstowy ("t") — domyślny
do plików .txt, .csv, .json.
💾 Tryb binarny ("b") — do danych surowych
praca z bajtami: obrazy, audio, PDF, pliki wykonywalne
do plików .jpg, .mp3, .zip, .exe.
📚 Przydatne biblioteki
🥣 BeautifulSoup to biblioteka do HTML i XML — idealna do web scrapingu
📞 Książka kontaktowa z json - praca domowa
import json
import os
if os.path.exists("plik_z_danymi.json"):
with open("plik_z_danymi.json", "r", encoding="utf8") as plik_json:
kontakty = json.load(plik_json)
menu = '''
Wybierz operację do wykonania:
1 - dopisanie pozycji do książki
2 - akutalizacja pozycji ksiązki
3 - usunięcie pozycji książki
4 - wydruk imion z książki
5 - wydruk całej książki z kontaktami
6 - koniec programu
7 - zapisanie kontaktów
'''
while True:
print(menu)
wybor=int(input('Podaj kod operacji ='))
if wybor == 1:
imie=input('Podaj imię:')
if imie not in kontakty:
email = input(f'Podaj email dla kontaktu {imie}:')
kontakty[imie] = email
print('Dodano kontakt.')
else:
print('Podany kontakt już istnieje.')
elif wybor == 2:
imie = input('Podaj nazwę kontaktu do aktualizacji:')
if imie in kontakty:
nowy_email = input(f"Podaj nowy email dla kontaktu {imie}: ")
kontakty[imie] = nowy_email
print(f"Zaktualizowano kontakt: {imie} → {nowy_email}")
else:
print("Nie znaleziono kontaktu.")
elif wybor == 3:
imie = input('Podaj nazwę kontaktu do usunięcia:')
if imie in kontakty:
del kontakty[imie]
print(f"Usunięto kontakt: {imie}")
else:
print("Nie znaleziono kontaktu.")
elif wybor == 4:
for imie in kontakty:
print(", ".join(kontakty))
elif wybor == 5:
print(kontakty)
elif wybor == 6:
print("Dziękuję za skorzystanie z ksiązki! ")
break
elif wybor == 7:
with open("plik_z_danymi.json", "w", encoding = "utf8") as plik_json:
json.dump(
kontakty,
plik_json,
indent=2,
sort_keys=True,
ensure_ascii=False,
)
print("Zapisano książkę w pliku 'plik_z_danymi'.")
❌❌❌ Pytanie na środę - Dlaczego pojawia się default_decoder.decode(s)
~~~~~~~~~~~~~~~~~~~~~~~^^^ i inne błędy ❌❌❌