Fayl amallari bilan tanishish
Fayl — ma'lumotni saqlash uchun ishlatiladigan nomlangan joy. Masalan, main.py — Python kodini saqlash uchun doimo ishlatiladigan fayl.
Python turli fayl amallarini bajarish uchun turli xil funksiyalarni taqdim etadi, bu jarayon fayllar bilan ishlash (File Handling) deb ataladi.
Pythonda, fayl ustida biror amalni bajarish uchun avval uni ochishimiz kerak — buning uchun open() funksiyasidan foydalanamiz. Keling, bir misolni ko'rib chiqamiz:
Aytaylik, bizda file1.txt nomli faylimiz bor.
Pythonda faylni ochish

Bu faylni ochish uchun, open() funksiyasidan foydalanishimiz mumkin.
file1 = open("file1.txt")
Bu yerda biz file1 nomli fayl obyekti yaratdik. Endi, fayllar bilan ishlash uchun shu obyektdan foydalanishimiz mumkin.
Python fayllarni turli rejimlarda (o'qish, yozish, qo'shish va h.k.) ochish imkonini beradi, shularga asoslanib biz turli fayl amallarini bajarishimiz mumkin. Masalan,
file1 = open("file1.txt")
Bu yerda biz faylni o'qish rejimida (faqat kontentni o'qiy olamiz, o'zgartira olmaymiz) ochyapmiz.
Eslatma: Standart holatda, Python fayllari o'qish rejimida ochiladi. Shuning uchun open("file1.txt", "r") kodi open("file1.txt") bilan barobardir.
Pythonda faylni ochishning turli rejimlari
| Rejim | Tavsif |
|---|---|
r | Faylni o'qish rejimida ochadi (standart) |
w | Faylni yozish rejimida ochadi |
x | Faylni eksklyuziv yaratish uchun ochadi |
a | Faylni qo'shish (appending) rejimida ochadi (kontentni fayl oxiriga qo'shadi) |
t | Faylni matn (text) rejimida ochadi (standart) |
b | Faylni ikkilik (binary) rejimida ochadi |
+ | Faylni ham o'qish, ham yozish rejimida ochadi |
Mana faylni turli rejimlarda ochishga bir nechta misollar,
# faylni standart rejimda ochish (o'qish va matn)
file1 = open("test.txt") # open("test.txt", "rt") bilan barobar
# faylni yozish va matn rejimida ochish
file1 = open("test.txt",'w')
# faylni o'qish, yozish va ikkilik rejimida ochish
file1 = open("img.bmp",'+b')
Faylni uning to'liq yo'li (full path) orqali ham ochishimiz mumkin.
file_path = "/home/user/documents/file1.txt"
file1 = open(file_path)
Bu misolda, /home/user/documents/file1.txt — /home/user/documents/ papkasida joylashgan file1.txt nomli faylning to'liq yo'li.
Eslatma: Papkalar (directories) haqida ko'proq bilish uchun, iltimos Python Directory sahifasiga tashrif buyuring.
Faylni ochganimizdan so'ng, uning kontentini o'qish uchun read() metodidan foydalanamiz. Masalan,
Aytaylik, bizda file1.txt nomli faylimiz bor.
Pythonda faylni o'qish

Endi, faylning kontentini o'qiymiz.
# faylni o'qish rejimida ochish
file1 = open("file1.txt")
# fayl kontentini o'qish
read_content = file1.read()
print(read_content)
Natija
This is a test file.
Hello from the test file.
Yuqoridagi misolda, file1.read() kodi faylning kontentini o'qiydi va uni read_content o'zgaruvchisida saqlaydi.
Eslatma: Agar file1.read() kodi qanday ishlashi haqida aniqlik kerak bo'lsa, iltimos Working of Python Objects sahifasiga tashrif buyuring.
Python faylga yozish uchun, uni w parametri yordamida yozish rejimida ochishimiz kerak.
Aytaylik, bizda file2.txt nomli faylimiz bor. Keling, shu faylga yozamiz.
# file2.txt faylini yozish rejimida ochish
file2 = open('file2.txt', 'w')
# file2.txt fayliga kontent yozish
file2.write('Programming is Fun.\n')
file2.write('Programiz for beginners\n')
Yuqoridagi kodni ishga tushirganimizda, fayl ichida belgilangan kontentni ko'ramiz.
Pythonda faylga yozish

Faylga yozayotganda ehtiyot bo'ling
Agar allaqachon kontentga ega faylga yozish amalini bajarishga urinsak, yangi kontent mavjud kontentning o'rnini bosadi. Masalan,
Aytaylik, bizda file2.txt nomli faylimiz bor.
Pythonda faylga yozish

Endi shu faylga yozamiz.
# file2.txt faylini yozish rejimida ochish
file2 = open('file2.txt', 'w')
# file2.txt fayliga yangi kontent yozish
file2.write('Learning Python is interesting.\n')
file2.write('File operations are useful.\n')
Yuqoridagi kodni ishga tushirganimizda, yangi kontent file2.txt faylidagi mavjud kontentning o'rnini bosadi.
Mavjud Python fayliga yozish

Eslatma: Agar mavjud bo'lmagan faylni ochishga urinsak, yangi fayl yaratiladi va write() metodi kontentni faylga qo'shadi.
Fayl ustida amallarni bajarib bo'lganimizdan so'ng, faylni to'g'ri yopishimiz kerak. Pythonda faylni yopish uchun close() funksiyasidan foydalanamiz. Masalan,
# faylni ochish
file1 = open("file1.txt", "r")
# faylni o'qish
read_content = file1.read()
print(read_content)
# faylni yopish
file1.close()
Natija
This is a test file.
Hello from the test file.
Eslatma: Faylni yopish fayl bilan bog'liq resurslarni bo'shatadi. Shuning uchun faylni har doim yopish yaxshi dasturlash amaliyoti hisoblanadi.
Pythonda with...open yordamida faylni ochishning yaxshiroq usuli bor. Masalan,
with open("file1.txt", "r") as file1:
read_content = file1.read()
print(read_content)
Natija
This is a test file.
Hello from the test file.
Bu yerda, with...open faylni avtomatik yopadi, shuning uchun bizga close() funksiyasini ishlatish shart emas.
Eslatma: Faylni yopish haqida qayg'urishimiz shart bo'lmagani uchun, with...open sintaksisidan foydalanishni odat qiling.
Agar fayl bilan ishlayotganda xatolik yuz bersa, kod faylni yopmasdan chiqib ketadi. Shuning uchun, try...finally blokidan foydalanish yaxshi amaliyot hisoblanadi.
Keling, bir misolni ko'ramiz.
try:
file1 = open("file1.txt", "r")
read_content = file1.read()
print(read_content)
finally:
# faylni yopish
file1.close()
Natija
This is a test file.
Hello from the test file.
Bu yerda, finally bloki har doim bajariladi, shuning uchun biz close() funksiyasini shu blok ichida saqladik. Bu faylning har doim yopilishini kafolatlaydi.
Xatoliklar (exceptions) haqida ko'proq bilish uchun, Python Exception Handling sahifasiga tashrif buyuring.
Eslatma: Fayllar bilan ishlayotganda with...open sintaksisidan foydalanishni odat qiling, shunda faylni yopish haqida qayg'urishingiz shart bo'lmaydi.
Fayl obyekti bilan turli metodlar mavjud. Ulardan ba'zilari yuqoridagi misollarda ishlatilgan.
Mana matn rejimidagi metodlarning to'liq ro'yxati va ularning qisqa tavsifi:
| Metod | Tavsif |
|---|---|
close() | Ochilgan faylni yopadi |
read(n) | Fayl kontentini o'qiydi |
seek(offset,from=SEEK_SET) | Fayl pozitsiyasini fromga (boshlanish, joriy, oxiri) nisbatan offset baytga o'zgartiradi |
tell() | Fayl obyektining joriy pozitsiyasini ifodalovchi integerni qaytaradi |
write(s) | Faylga satr yozadi |
writelines(lines) | Faylga qatorlar ro'yxatini yozadi |