Python - zajęcia 8 - zadania

## od przemka
# Napisz program, który zapisze zawartość stringa do pliku "plik.txt"
with open("plik.txt", "w") as plik:
    plik.write("przykladowa tresc.")
# Napisz program, który otwiera plik tekstowy o nazwie "plik.txt" i wypisuje jego zawartość na ekran.
with open("plik.txt", "r") as plik:
    print(plik.read())
# Utwórz plik "nowy.txt" i zapisz do niego kilka linijek tekstu. Skorzystaj z funkcji open w trybie 'w'.
with open("plik.txt", "w") as plik:
    plik.write("Lubie pythona.\nserio.")

# Użyj trybu 'a' (append), aby dopisać kolejną linijkę tekstu do pliku "nowy.txt" bez nadpisywania jego zawartości.
with open("nowy.txt", "a") as plik:
    plik.write("Nie no, zarcik.\nhehehehe.\nkoniecsmieszkow. \ndobranoc.")
# Napisz program, który czyta plik tekstowy linia po linii i każdy wiersz wypisuje na ekran z numerem linii.
with open("nowy.txt", "r") as plik:
    for nr_linii, linijka in enumerate(plik, start=1):
        print(f"Nr linii: {nr_linii}")
        print(linijka)
        #print(type(linijka))
 
# Skorzystaj z konstrukcji with open do otwarcia pliku "with.txt" i zapisania w nim paru linijek tekstu. Upewnij się, że plik będzie zamknięty automatycznie.
with open ("with.txt", "w") as plik:
    plik.write("""
Siema siema
kurde witam
jak wam życie mija?
u mnie wszystko w porząsiu
no to nara.""")
# Załaduj prosty plik "currency.csv" składający się z kilku wierszy i kolumn, następnie wypisz każdą linię na ekran. Sprawdź typ wczytanych danych.

plik_csv="currency.csv"
with open (plik_csv, "r") as plik:
    for linia in plik:
        print(linia)
        print(type(linia))

    
# Użyj biblioteki csv do wczytania "currency.csv". Sprawdź typ wczytanych danych po użyciu biblioteki csv.
import csv 
plik_csv="currency.csv"
with open(plik_csv, "r") as plik:
    reader=csv.reader(plik)
    for linia in reader:
        print(linia)
        print("Typy linii: ", type(linia))

# Zgromadź listę kilku słowników (np. {"imie": "Jan", "wiek": 20}) i zapisz je jako plik CSV z użyciem funkcji open i context managera (bez bibliotek zewnętrznych).
lista=[{"imie":"Klaudia", "wiek":24}, {"imie":"Anna", "wiek":40}, {"imie":"Stefan", "wiek":60}]

with open("dane.csv", "w", encoding="utf-8") as plik:
    for osoba in lista:
        plik.write(f"{osoba["imie"]}, {osoba["wiek"]}\n")

with open("dane.csv", "r", encoding="utf-8") as plik:
    print(plik.read())
# Stwórz słownik z danymi kontaktowymi (tak jak w naszym projekcie). Zapisz go do pliku "kontakty.json". W osobnej aplikacji spróbuj go wczytać. Użyj biblioteki json

import json
import os
kontakty = {"Alice" : "[email protected]",
            "Bob" : "[email protected]",
            "Anna": "[email protected]"
            }
with open ("dane_kontaktowe.json", "w") as plik:
    json.dump(kontakty, plik, indent=4)
with open("dane_kontaktowe.json", "r") as plik:
    zawartosc=json.load(plik)
    # print(zawartosc)
    # print(type(zawartosc))
for imie in zawartosc:
    print(f"{imie}: {zawartosc[imie]}")
# BONUS dla chętnych. Spróbuj samodzielnie napisać parser do plików csv (czyli program który zamieni plik tekstowy csv na listę list)

#cos tam od przemka
with open ("plik_z_danymi.json", "r") as plik:
    print(plik.read())
    print(type(plik.read()))

Książka kontaktowa

# imie / pseudonim
# dane kontaktowe (dowolne - tel, / email)
# dodawanie, aktualizacja, usuwanie
# wybor dziwnego wariantu

#quiz tez z jasonem
import json
import os
###do domu 
PLIK_KONTAKTY="dane_kontaktowe.json"
kontakty = {}

while True:
    print("Książka kontaktowa:")
    print("Wybierz operację:")
    print("1 - dodanie wpisu")
    print("2 - aktualizacja wpisu")
    print("3 - usunięcie wpisu")
    print("4 - wydruk wszystkich kontaktów")
    print("5 - wydruk konretntego kontaktu")
    print("6 - koniec programu")
    print("7 - wczytywanie kontaktów z pliku")
    print("8 - zapis kontaktów z pliku")

    wybor = input("Podaj kod operacji: ")

    if wybor == "1":
        print("1")
        imie=input("Dodaj imię: ")
        email=input("Dodaj adres email: ")
        kontakty[imie]=email
        print("Dodano nowy kontakt")
    elif wybor == "2":
        print("2")
        kontakt=input("Podaj nazwę kontaktu do aktualizacji: ")
        while True:
            if kontakt in kontakty.keys():
                kontakty[kontakt]=input(f"Podaj nowe dane kontaktowe dla kontaktu {kontakt}")
                print("Dane kontaktu zostały zaktualizowane.")
                print("")
                break
            else:
                kontakt=input("Nie ma takiego kontaktu. Spróbuj jeszcze raz.")
    elif wybor == "3":
        print("3")
        kontakt=input("Podaj imię kontaktu do usunięcia: ")
        while True:
            if kontakt in kontakty.keys():
                del kontakty[kontakt]
                print(f"Usunięto kontakt o nazwie {kontakt}. ")
                break
            else:
                kontakt=input("Nie ma takiego kontaktu. Spróbuj jeszcze raz: ")
       
    elif wybor == "4":
        print("4")
        print("Oto lista wszystkich kontaktów:")
        # print(kontakty)
        #albo
        for key in kontakty:
            print(key)
            print(kontakty[key])

    elif wybor == "5":
        print("5")
        kontakt=input("Wybierz imię kontaktu do wydrukowania")
        while True:
            if kontakt in kontakty.keys():
                print(f"Dane kontaktu {kontakt}: {kontakty[kontakt]}")
                break
    elif wybor == "6":
        print("Koniec programu")
        break
    elif wybor =="7":
        print("7")
        if os.path.exists(PLIK_KONTAKTY):
            with open(PLIK_KONTAKTY, "r", encoding="utf-8") as plik:
                kontakty = json.load(plik)
            print("Wgrano dane z pliku.")
        else:
            print("Brak pliku z danymi.")


    elif wybor =="8":
        print("8")
        with open(PLIK_KONTAKTY, "w", encoding="utf-8") as plik:
            json.dump(kontakty,plik,ensure_ascii=False, indent=2)
        print("Zapisano dane do pliku.")

    else:
        print("Nie ma opcji o podanym kodzie.")