AXV

Fayllar bilan ishlash

open va with, rejimlar (r, w, a, x), write, read, readline, readlines, FileNotFoundError

9-sinfAdvanced Back-end va DevOps6-hafta · 18-dars

Bugun nimalarni o'rganamiz?

open va with

Faylni ochish

Fayldan o'qish

read va readlines

Fayl va xatolar

Fayl topilmasa

Takrorlash

Aniq istisnoni ushlash uchun qaysi yozuv to'g'ri?

Aniq istisno nomi yoziladi.
01

open va with

Faylni ochish

Fayl bilan ishlash

open: ochish Yozishyoki o'qish Avtomatikyopish (with) Natijasaqlandi Doim with ishlating

Faylga yozish


with open("kundalik.txt", "w", encoding="utf-8") as f:
    f.write("Birinchi qator\n")
    f.write("Ikkinchi qator\n")

with open("kundalik.txt", "a", encoding="utf-8") as f:
    f.write("Uchinchi qator\n")
  
w rejimi mavjud faylni darhol tozalaydi. Eski ma'lumot kerak bo'lsa, a (qo'shib yozish) ishlating. \n — yangi qator belgisi.

Mini-test

Mavjud faylni w rejimida ochsak nima bo'ladi?

w — eskisini o'chiradi.
02

Fayldan o'qish

read va readlines

O'qish usullari

read: hammasi readline:bitta qator readlines:ro'yxat for:qator-qator Odatda for sikli qulay

Fayldan o'qish


with open("kundalik.txt", encoding="utf-8") as f:
    hammasi = f.read()
print(hammasi)

with open("kundalik.txt", encoding="utf-8") as f:
    for qator in f:
        print(qator.strip())

with open("kundalik.txt", encoding="utf-8") as f:
    qatorlar = f.readlines()
print(len(qatorlar))
  
for qator in f katta fayllar uchun ham xavfsiz: butun fayl xotiraga birdaniga yuklanmaydi.

Mini-test

Faylni qator-qator o'qishning eng qulay usuli?

for sikli.
03

Fayl va xatolar

Fayl topilmasa

Xavfsiz o'qish

try: open FileNotFoundError Bo'sh natija/ xabar Dasturdavom etadi Fayl yo'q — xato emas, holat

Yozuvlar funksiyalari


def yozuv_qosh(matn, nom="kundalik.txt"):
    with open(nom, "a", encoding="utf-8") as f:
        f.write(matn + "\n")

def yozuvlar(nom="kundalik.txt"):
    try:
        with open(nom, encoding="utf-8") as f:
            return f.read().splitlines()
    except FileNotFoundError:
        return []

yozuv_qosh("Python o'rgandim", "yangi.txt")
print(yozuvlar("yangi.txt"))   # ["Python o'rgandim"]
print(yozuvlar("yoq.txt"))     # []
  
Faylga yozishda ham xato bo'lishi mumkin (papka yo'q, ruxsat yo'q): PermissionError, OSError. Kerak bo'lsa ularni ham ushlang.

Mini-test

r rejimida fayl topilmasa qaysi istisno chiqadi?

FileNotFoundError.

w va a rejimi

w

Yozish: eski mazmunni o'chiradi
VS

a

Qo'shib yozish: eskisi saqlanadi

Eski ma'lumotni yo'qotmaslik uchun a.

Atamalar. Bosing

open()

bosing

Faylni ochish funksiyasi

with

bosing

Faylni avtomatik yopadigan blok

Rejim

bosing

r, w, a, x: ochish maqsadi

encoding

bosing

Matn kodlanishi (utf-8)

Fayl bilan ishlash

1. Yozing

w yoki a rejimi.

2. O'qing

read yoki for.

3. Xatoni ushlang

FileNotFoundError.

Fayl rejimlari

RejimMa'nosiEslatma
rO'qishFayl yo'q bo'lsa xato
wYozishEskisini o'chiradi
aQo'shib yozishOxiridan qo'shadi
xYangi yaratishBor bo'lsa xato
bBinar rejimRasm, PDF, audio

Pastga bosing: rejimlar

Kundalik dasturi

  1. yozuv_qosh() funksiyasini yozing va 3 ta yozuv qo'shing.
  2. yozuvlar() funksiyasi bilan yozuvlarni o'qing; fayl yo'q bo'lsa bo'sh ro'yxat qaytsin.
  3. Yozuvlarni raqamlab chiqaring: «1. ...», «2. ...».

Qo'shib yozish


with open("log.txt", "w") as f:
    f.write("yangi\n")   # eski yozuvlar o'chadi
  

Qo'shib yozish


with open("log.txt", "a") as f:
    f.write("yangi\n")   # eskisi saqlanadi
  

Fayllar raqamlarda

0
asosiy rejim: r, w, a, x
0
o'qish usuli: read, readline, readlines
0
to'g'ri usul: with open

Doim with va encoding yozing.

Amaliy topshiriq 20 daqiqa

OsonFaylga yozing: salom.txt fayliga ikki qator yozing.
OsonHammasini o'qing: salom.txt ni o'qib, ekranga chiqaring.
O'rtaQo'shib yozish: salom.txt oxiriga yangi qator qo'shing (eskisi o'chmasin).
O'rtaQatorlarni raqamlang: Fayl qatorlarini «1. ...», «2. ...» ko'rinishida chiqaring.
QiyinFayl yo'q bo'lsa: yoq.txt ni o'qing; fayl yo'q bo'lsa «Fayl topilmadi» chiqsin.
BonusQatorlar soni: Fayldagi bo'sh bo'lmagan qatorlar sonini hisoblang.

Dars xulosasi

open va with

Fayl avtomatik yopiladi.

Rejimlar

r, w (o'chiradi!), a, x.

Xatolar

FileNotFoundError ni ushlang.

Uyga vazifa: «Kundalik» dasturi: faylga yozish va o'qish.

Keyingi dars: OOP asoslari

Klasslar va obyektlar

7-hafta · 19-dars