Failidega töö
Faili avamine
Faili avatakse open() funktsiooniga, kus tuleb määrata faili nimi ja režiim.
f = open('file.txt', 'r') # 'r' tähendab lugemist
Fail saab avada mitmes režiimis:
- ‘r‘ – ainult lugemiseks
- ‘w’ – kirjutamiseks (kustutab vana faili sisu või loob uue)
- ‘a’ – lisamiseks (uus sisu lisatakse faili lõppu)
Failist lugemine
Failist saab lugeda erinevatel viisidel:
f.read() # loeb kogu faili sisu
f.readline() # loeb ühe rea
f.readlines() # loeb kõik read listiks
Need meetodid võimaldavad lugeda kogu faili korraga või ridade kaupa.
Faili sulgemine
Fail tuleb pärast kasutamist sulgeda:
f.close()
Faili sulgemine on oluline, et vabastada süsteemi ressursid ja tagada, et kõik andmed oleksid salvestatud.
Mugavam viis: with
with open('file.txt', 'r') as f:
for line in f:
print(line)
with konstruktsioon sulgeb faili automaatselt pärast kasutamist – turvalisem ja lühem viis töötamiseks.
Failist lugemise funktsioon
def Loe_failist(fail: str) -> list:
with open(fail, 'r', encoding="utf-8-sig") as f:
return [rida.strip() for rida in f]
Loeb faili sisu ridade kaupa listi, eemaldades iga rea lõpust tühikud ja reavahetused.
Faili kirjutamise funktsioon
def Kirjuta_failisse(fail: str, jarjend: list):
with open(fail, 'w', encoding="utf-8-sig") as f:
for line in jarjend:
f.write(line + '\n')
Kirjutab listis olevad andmed faili, iga elemendi eraldi reale.
Faili kustutamine
from os import path, remove
if path.isfile("fail.txt"):
remove("fail.txt")
Kontrollib, kas fail eksisteerib ja kustutab selle. Kasulik ajutiste failide või logide haldamiseks.
Failide otsing kaustas
from os import listdir
failinimed = listdir("C:\\Users\\kasutaja\\Music")
mp3_leidub = any(fail.endswith(".mp3") for fail in failinimed)
print(mp3_leidub)
Otsib kaustast konkreetse laiendiga faile, nt .mp3. Kasulik failide automaatseks tuvastamiseks.
E-kirja saatmine Pythonis
Moodulite import
import smtplib
from email.message import EmailMessage
smtplib võimaldab e-kirju saata SMTP-protokolli kaudu.
EmailMessage võimaldab meil koostada e-kirja koos päiste, sisu ja manustega.
E-kirja päise seadistamine
message = EmailMessage()
message['Subject'] = "Email test from Python"
message['From'] = "your_email@gmail.com"
message['To'] = "receiver_email@address.com"
Siin määrame e-kirja teema, saatja ja saaja aadressi
E-kirja tekstisisu
message.set_content("Hello from Python!")
See on e-kirja põhisisu. Tekst kuvatakse tavalise kirjana.
SMTP-serveri seadistamine
server = smtplib.SMTP("smtp.gmail.com", 587)
server.ehlo()
server.starttls()
Loome ühenduse Gmaili SMTP-serveriga, kasutades porti 587 ja turvalist TLS-ühendust.
Konto autentimine ja saatmine
server.login("your_email@gmail.com", "your_email_password")
server.send_message(message)
server.quit()
Sisselogimine e-posti kontole ning e-kirja saatmine.
Märkus: Gmaili puhul peab kasutama App password.
HTML-sisuga e-kiri
with open('message.html', 'r') as file:
html_sisu = file.read()
message.set_content(html_sisu, subtype='html')
Failist loetud HTML lisatakse e-kirja sisuks. Saab kasutada värve, linke, päiseid jms.
Pildi manustamine
import imghdr
with open('image.jpg', 'rb') as file:
image_data = file.read()
message.add_attachment(image_data, maintype='image', subtype=imghdr.what(None, image_data))
Avame pildi binaarselt ja lisame selle manusena e-kirjale.
imghdr tuvastab automaatselt pildi tüübi (nt jpg, png).
Mis on JSON?
JSON (JavaScript Object Notation) on andmeformaat, mida kasutatakse:
- andmete salvestamiseks
- andmete vahetamiseks süsteemide vahel
Mooduli import
import json
Standardmoodul JSON-andmetega tööks.
Python → JSON string
andmed = {"nimi": "Anna", "vanus": 25, "abielus": False}
json_string = json.dumps(andmed)
dumps() teisendab dict-objekti JSON-stringiks.
JSON faili salvestamine
with open("andmed.json", "w") as f:
json.dump(andmed, f)
Salvestab Python dict objekti JSON-faili.
JSON faili lugemine
with open("andmed.json", "r") as f:
andmed_failist = json.load(f)
Laeb JSON-failist andmed ja muudab need Python objektiks.
Formaaditud väljastus
print(json.dumps(andmed, indent=2, sort_keys=True))
Prindib JSON andmed ilusti loetavas kujus – sorteeritud võtmed ja taandega
Keerulisem JSON struktuur
klass = {
"opetaja": "Tamm",
"opilased": [
{"nimi": "Mari", "hinne": 5},
{"nimi": "Jüri", "hinne": 4}
]
}
with open("klass.json", "w") as f:
json.dump(klass, f, indent=2)
JSON toetab pesastatud andmestruktuure – listid, dictid, objektid jm
Näidisprojekt: Ilmateade JSON API-st
import requests
import json
linn = input("Sisesta linna nimi: ")
api_voti = "SINU_API_VÕTI"
url = f"http://api.openweathermap.org/data/2.5/weather?q={linn}&appid={api_voti}&units=metric&lang=et"
vastus = requests.get(url)
andmed = vastus.json()
if andmed.get("cod") != "404":
print(f"Temperatuur: {andmed['main']['temp']}°C")
else:
print("Linna ei leitud.")
Teeme HTTP-päringu, saame vastuseks JSON andmed ja töötleme neid Pythonis.
Tüüpiline kasutus: veebiteenuste ühendamine.