- 1 1. with-lause põhialused
- 2 2. with-lause põhikasutus
- 3 3. Faili avamise režiimid with-lausega
- 4 4. Mitme faili samaaegne töötlemine
- 5 5. with-lause eelised
- 6 6. Praktilised näited ja parimad tavad
- 7 7. with-lause laiendatud kasutus Python 3.3+
- 8 8. with-lause uuendused Python 3.9+
- 9 9. with-lause kasutamise tähelepanekud
- 10 10. Kokkuvõte
1. with
-lause põhialused
Pythonis on with
-lause spetsiaalne süntaks, mis lihtsustab ressursside haldamist. Näiteks kasutatakse seda failide, võrgupöördumiste või andmebaasiühenduste avamiseks ja hilisemaks automaatseks sulgemiseks. with
-lause abil toimub ressursside vabastamine automaatselt, mis muudab koodi lihtsamaks ja aitab vältida vigu.
Mis on with
-lause?
Pythonis kasutab with
-lause niinimetatud “kontekstihaldureid”, mis avavad ja sulgevad ressursse automaatselt. Tavaliselt faili avamisel kasutatakse open()
funktsiooni ning pärast töötlemist peab faili käsitsi sulgema close()
meetodiga. with
-lausega saab kogu selle protsessi teha ühe reaga – fail suletakse automaatselt ning kood muutub lihtsamaks.
with open('example.txt', 'r') as file:
content = file.read()
Ülaltoodud koodis avatakse fail lugemiseks ning pärast sisu lugemist suletakse fail automaatselt. with
-lause lihtsustab ressursside haldamist ja muudab koodi loetavamaks.
2. with
-lause põhikasutus
with
-lause abil ei pea enam ressursside avamist ja sulgemist käsitsi haldama – kood jääb puhtam ja selgem. Vaatame lihtsat näidet faili avamisest ja sisu väljastamisest.
Näide failiga töötamisest with
-lause abil
Järgmine koodinäide avab faili ja loeb selle sisu, kasutades with
-lauseid.
with open('sample.txt', 'r') as file:
content = file.read()
print(content)
Selles näites avatakse fail open()
funktsiooniga, as
märksõna abil seotakse failimuutuja file
-ga. Sisu loetakse read()
meetodiga ning väljastatakse print()
funktsiooniga. with
-lause kasutamisel ei ole vaja eraldi close()
-i kutsuda – ressurss vabastatakse automaatselt.
Võrdlus – ilma with
-lause kasutamiseta
Kui with
-lauset ei kasutata, tuleb faili käsitsi sulgeda.
file = open('sample.txt', 'r')
content = file.read()
print(content)
file.close()
Siin tuleb pärast töötlemist kindlasti kutsuda file.close()
. with
-lause automatiseerib selle, suurendades koodi ohutust.
3. Faili avamise režiimid with
-lausega
Faili avamisel with
-lausega tuleb määrata režiim: lugemine ('r'
), kirjutamine ('w'
) või lisamine ('a'
).
Režiimide selgitused
'r'
: Lugemisrežiim. Fail avatakse lugemiseks. Kui faili ei ole, tekib viga.'w'
: Kirjutamisrežiim. Fail avatakse kirjutamiseks. Kui faili pole, luuakse uus; olemasolev fail kirjutatakse üle.'a'
: Lisamisrežiim. Fail avatakse kirjutamiseks faili lõppu. Kui faili pole, luuakse uus.
Näide kirjutamisest ja lisamisest
Järgnevalt on toodud näited andmete kirjutamiseks with
-lausega.
# Uue faili loomine ja kirjutamisrežiimis avamine
with open('sample.txt', 'w') as file:
file.write('Hello, world!\n')
# Lisamisrežiimis avamine
with open('sample.txt', 'a') as file:
file.write('This is an additional line.\n')
Esimeses näites avatakse fail 'w'
-režiimis ja kirjutatakse tekst. Teises näites avatakse sama fail 'a'
-režiimis ja lisatakse uus rida lõppu.

4. Mitme faili samaaegne töötlemine
with
-lause võimaldab avada ja töödelda mitu faili korraga. Selleks saab kasutada kas pesastatud with
-lauseid või avada mitu faili ühel real, eraldatuna komaga.
Pesastatud with
-lause kasutamine
Näide, kus with
-lauseid kasutatakse pesastatult:
with open('file1.txt', 'r') as file1:
with open('file2.txt', 'r') as file2:
content1 = file1.read()
content2 = file2.read()
print(content1, content2)
See meetod on intuitiivne, kuid kui pesastamine läheb sügavaks, muutub kood vähem loetavaks.
Mitme faili avamine ühel real
Saab avada mitu faili ühes with
-lause real, kasutades koma.
with open('file1.txt', 'r') as file1, open('file2.txt', 'r') as file2:
content1 = file1.read()
content2 = file2.read()
print(content1, content2)
See muudab koodi kompaktsemaks. Kui faile on palju, võib vajadusel koodi rea lõhestada.
5. with
-lause eelised
with
-lause parandab koodi loetavust ja ohutust.
Automaatne sulgemine ja veavabadus
with
-lause suurim eelis on ressursside automaatne vabastamine. Faili või muu ressursi unustatud sulgemine võib põhjustada vigu – with
välistab selle riski.
Koodi loetavuse tõus
with
-lause abil on koodiplokk selgelt piiritletud – on kohe näha, kus toimub ressursside haldus.
Vähendab inimlikke eksimusi
with
-lausega väheneb võimalus unustada ressursside sulgemine, eriti keerulisemate operatsioonide puhul.
6. Praktilised näited ja parimad tavad
Siin tutvustatakse with
-lause kasutust väljaspool failitööd ja parimaid praktikaid.
Näide – with
-lause andmebaasiühendusega
with
-lauset saab kasutada ka võrguühenduste või andmebaasidega.
import sqlite3
with sqlite3.connect('example.db') as connection:
cursor = connection.cursor()
cursor.execute('SELECT * FROM table_name')
Selles näites suletakse andmebaasiühendus automaatselt pärast töötlemist.
Parimad praktikad
- Kasutage alati
with
-lauset: Failidega või muude ressurssidega töötamisel kasutage alatiwith
-lauset, et vältida vigu. - Kirjutage kompaktset koodi:
with
-lause aitab hoida koodi lühikese ja loetavana ka teistele arendajatele.
7. with
-lause laiendatud kasutus Python 3.3+
Python 3.3-st alates saab kasutada moodulit contextlib
ja selle ExitStack
-i, et hallata dünaamiliselt mitut ressurssi samaaegselt with
-lausega.
Mitme faili avamine ExitStack
abil
Näide mitme faili avamisest ExitStack
abil:
from contextlib import ExitStack
with ExitStack() as stack:
file1 = stack.enter_context(open('file1.txt', 'r'))
file2 = stack.enter_context(open('file2.txt', 'r'))
file3 = stack.enter_context(open('file3.txt', 'r'))
# Loeme failide sisu
content1 = file1.read()
content2 = file2.read()
content3 = file3.read()
print(content1, content2, content3)
See võimaldab mugavalt hallata dünaamiliselt muutuvaid ressursse.

8. with
-lause uuendused Python 3.9+
Python 3.9-st alates saab with
-lausega kasutada tuple-laadset süntaksit mitme ressursi käsitlemiseks.
Tuple-süntaksi näide
Näide Python 3.9 uuest süntaksist:
with (open('file1.txt', 'r') as file1,
open('file2.txt', 'r') as file2,
open('file3.txt', 'r') as file3):
content1 = file1.read()
content2 = file2.read()
content3 = file3.read()
print(content1, content2, content3)
See võimaldab veelgi kompaktsemat ja loetavamat koodi.
9. with
-lause kasutamise tähelepanekud
Kuigi with
-lause on väga kasulik, on mõned nüansid, millega peaks arvestama.
with
-lause kasutamise nõuanded
- Erindite käsitlemine: Kui
with
-lause sees tekib erind, vabastatakse ressursid automaatselt. Täiendava töökindluse jaoks võib kasutada erindite käsitlemise blokke. - Ressursi tüüp:
with
-lauset saab kasutada ainult ressurssidega, mis toetavad kontekstihaldust (context manager). Muude ressursside puhulwith
-lause ei tööta.
10. Kokkuvõte
Pythonis on with
-lause tugev tööriist ressursside haldamise lihtsustamiseks ning koodi turvalisuse ja loetavuse tõstmiseks. Eriti kasulik failide, võrgupöördumiste või andmebaasiühenduste puhul. Käesolevas artiklis selgitasime with
-lause põhikasutust, eeliseid ja ka laiendatud võimalusi.
- Koodi lihtsustamine:
with
-lausega saab ressursi vabastamise automatiseerida ja koodi lihtsustada. - Vigade ennetamine:
with
-lause aitab vältida vigu, mis võivad tekkida ressursi sulgemata jätmisel. - Python versioonide uuendused: Python 3.3 ja 3.9 uuendustega on
with
-lause saanud veelgi paindlikumaks ja võimsamaks.
Kokkuvõttes aitab with
-lause aktiivne kasutamine tõsta koodi kvaliteeti. Kasutage seda võimalust ja arendage oma Python oskusi uuele tasemele!