Python zajęcia 8
<< 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)