Python zajęcia 8

Python zajęcia 8
Photo by Ilya Pavlov / Unsplash

🗂️ 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

Tryb

Nazwa

Działanie

"w"

Write

Nadpisuje cały plik. Jeśli plik istnieje — jego zawartość zostanie usunięta.

"a"

Append

Dopisuje dane na końcu pliku. Nie usuwa istniejącej zawartości.

➕ 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



json

Obsługa plików JSON

PyYAML

Obsługa plików YAML

csv

Obsługa plików CSV

pandas

Analiza i manipulacja danymi

xml.etree.ElementTree

Obsługa plików XML

🥣 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 ❌❌❌