Python zajęcia 8

Python zajęcia 8
Photo by Jan Antonin Kolar / Unsplash

<< Obsługa plików w Pythonie >>

  • Służy do tego słowo open
  • sugerowane jest dodanie słowa with po to aby plik był automatycznie domykany na koniec pracy (context manager)

<< Odczytywanie plików >>

with open("mojplik.txt") as moj_plik:
    print(moj_pli.read())

Python domyślnie otwiera pliki w trybie do odczytu ("r")

Metoda .read() umożliwia odczytanie całej zawartości pliku jako ciąg znaków (string)

<< Zapisywanie plików >>

Chcąc zapisać coś w pliku należy otworzyć go w trybie "w" (write)

with open("mojplik.txt, "w") as moj_plik:
    moj_plik.write("Nowa zawartość")

WAŻNE! w tym trybie istniejąca zawartość pliku zostanie nadpisana

Jeśli chcemy dopisać cos do końca pliku trzeba użyć trybu "a" (append)

with open("mojplik.txt, "a") as moj_plik:
    moj_plik.write("Nowa zawartość")

<< Sprawdzenie czy plik istnieje >>

os.path.exists("sciezka_do_pliku")

<< Pliki JSON >>

  • to jeden z najpopularniejszych formatów do przechowywania i wymiany danych
  • budową przypomina nieco pythonowy słownik (ALE nie jest identyczny!!!)
  • do obsługi plików w tym formacie wykorzystujemy bibliotekę json
import json

<< Wczytanie JSONa >>

Do wczytania pliku JSON służy funkcja load

import json

with open("plik_dane.json") as plik_json:
    zawartosc = json.load(plij_json)
  • wczyta to nam plik json, a następnie jego zawartość zamieni na odpowiedni obiekt pythonowy (tzw. deserializacja danych)

<< Zapis JSONa >>

Do zapisu służy funkcja dump, należy użyć trybu "w"

import json

dane = {"jabłka" : 4, "mango" : 3}

with open("plik_dane.json", "w") as plik_json:
    json.dump(dane, plik_json, indent=4)

<< Kodowanie znaków >>

Domyślnie biblioteka json przy zapisie podmieni nam wszystkie "dziwne" znaki (np. polskie litery) tak aby całość dało się zapisać jako ascii.

Chcąc wymusić kodowanie utf8 należy:

  • przy wczytywaniu
import json

with open("plik_z_danymi.json", encoding="utf8") as plik_json:
    zawartosc = json.load(plik_json)
  • przy zapisywaniu
import json

dane = {"jabłka" : 4, "mango" : 3}

with open("plik_z_danymi.json", "w", encoding="utf8") as plik_json:
    json.dump(
        dane,
        plik_json,
        indent=4,
        sort_keys=True,
        ensure_ascii=False,
    )

<< CSV >>

import csv

with open("currency.csv", "r") as plik:
    reader = csv.reader(plik)

    print(reader)

    for wiersz in reader:
        print(wiersz)
import json

#sprawdzanie czy plik istnieje
import os
PLIK_KONTAKTY = "jsonsave.json"

if os.path.exists(PLIK_KONTAKTY):
    with open(PLIK_KONTAKTY, "r") as plik:
        zawartosc = json.load(plik) #to spowoduje że zawartośc będzie słownikiem
        print(zawartosc)