Töö failidega
Faili avamine: f = open(‘file.txt’, mode) (režiimid: r — lugemine, w — kirjutamine, a — lisamine).
Lugemine:
- f.read(n): Loeb n sümbolit või kogu faili.
- f.readline(n): Loeb rea (kuni n sümbolit).
- f.readlines(n): Loeb n rida.
Näide loendisse lugemiseks:
| 123 | defLoe_failist(fail): with open(fail, 'r', encoding="utf-8-sig") as f: return[rida.strip() forrida inf] |
Kirjutamine:
Näide loendi salvestamiseks:
| 1234 | defKirjuta_failisse(fail, jarjend): with open(fail, 'w', encoding="utf-8-sig") as f: forline injarjend: f.write(line +'\n') |
Sulgemine: f.close() või with automaatseks sulgemiseks.
Faili kustutamine: os.remove(‘fail.txt’) (kui fail olemas).
Failide otsing:
| 1234 | fromos importlistdirforfailinimi inlistdir("tee"): iffailinimi.endswith(".mp3"): print("MP3 leitud!") |
E-kirja saatmine
Moodulid: smtplib, email.message.
Sammud:
- Sõnumi loomine: message = EmailMessage().
- Päise seadistamine: message[‘Subject’], message[‘From’], message[‘To’].
- Sõnumi sisu: message.set_content(«Tekst»).
- SMTP ühendus: server = smtplib.SMTP(‘smtp.gmail.com’, 587), server.starttls(), server.login(email, password).
- Saatmine: server.send_message(message), server.quit().
HTML-sisu:
| 12 | with open('message.html', 'r') as file: message.set_content(file.read(), subtype='html') |
Pildi manustamine:
| 123 | import imghdrwith open('image.jpg', 'rb') as file: message.add_attachment(file.read(), maintype='image', subtype=imghdr.what(None, file.read())) |
JSON
Mõiste: Andmevorming salvestamiseks ja vahetamiseks (objektid, massiivid, numbrid, stringid, true/false, null).
Moodul: import json.
Tehted:
- Python → JSON: json.dumps(data) (string), json.dump(data, file) (faili).
- JSON → Python: json.loads(string), json.load(file).
Vormindamine: json.dumps(data, indent=2, sort_keys=True).
Näide:
| 12345 | andmed ={"nimi": "Anna", "vanus": 25}with open("andmed.json", "w") as f: json.dump(andmed, f, indent=2)with open("andmed.json", "r") as f: print(json.load(f)) |
Näide API (ilm):
| 123456 | importrequestslinn =input("Linn: ")url =f"http://api.openweathermap.org/data/2.5/weather?q={linn}&appid={api_key}&units=metric&lang=et"andmed =requests.get(url).json()ifandmed["cod"] !="404": print(f"Temperatuur: {andmed['main']['temp']} °C") |
Täiendavad soovitused ja näited
Failidega töötamisel:
- Failide avamisel soovitatakse alati kasutada
with-konstruktsiooni. See tagab, et fail suletakse automaatselt ka siis, kui programm katkeb vea tõttu.
Näide:
with open("fail.txt", "r", encoding="utf-8") as f:
sisu = f.read()
Faili olemasolu kontroll:
Enne lugemist või kustutamist on soovitatav kontrollida, kas fail üldse eksisteerib.
import os
if os.path.exists("fail.txt"):
print("Fail on olemas")
else:
print("Faili ei leitud")
Kaustade loomine vajadusel:
Kui on vaja salvestada faile kindlasse kausta, tuleks veenduda, et kaust eksisteerib. Vajadusel saab selle luua.
import os
os.makedirs("andmed", exist_ok=True)
Vigade käsitlemine JSON-failidega:
Faili puudumisel või vigases vormingus võib json.load() visata vea. Selle vältimiseks võib kasutada try-except plokki.
import json
try:
with open("andmed.json", "r", encoding="utf-8") as f:
andmed = json.load(f)
except (FileNotFoundError, json.JSONDecodeError):
andmed = {}
Paroolide käsitlemine e-kirjade saatmisel:
Turvalisuse huvides ei tohiks e-posti paroole otse koodi kirjutada. Selle asemel soovitatakse kasutada keskkonnamuutujaid või väliseid seadistusi.
import os
email = os.getenv("EMAIL")
password = os.getenv("EMAIL_PASSWORD")
Harjutusidee õppimiseks:
Väike projekt, mille abil saab harjutada failide lugemist, kirjutamist ja JSON-vormingut:
Ülesanne: “Artiklihoidla”
- Programm loeb artiklite pealkirju ja sisu JSON-failist.
- Kasutaja saab lisada uusi artikleid.
- Artiklil on pealkiri, autor ja sisu.
- Andmed salvestatakse JSON-faili.
- Kuvatakse kõik olemasolevad artiklid.
Kui on soov, võin sellest harjutusest teha näidisrakenduse või juhise samm-sammult. Anna teada.

