Tutorial Material

Fayl I/O (kirish/chiqish)

Share to
Python fayl I/O

Bu bo'lim Python 3'dagi asosiy kirish/chiqish (I/O) amallarini qamrab oladi — ekranga chiqarish, klaviaturadan ma'lumot olish va diskdagi fayllar bilan ishlash.

print() bilan chiqarish

print() qiymatlarni matnga aylantiradi va standart chiqishga yozadi.

print("Python is a great programming language")
print("A", "B", "C", sep="-")

input() bilan klaviaturadan kiritish

Python 3'da input() har doim satr qaytaradi.

# Odatda input() dan keladigan qiymatlarni simulyatsiya qilamiz
name = "Alice"
age = 24
print(f"Hello {name}, next year you are {age + 1}")

Faylni ochish

Hammasi o'rnatilgan (built-in) open() funksiyasidan boshlanadi. U fayl yo'lini va nima qilmoqchi ekaningizni bildiruvchi rejimni (mode) oladi hamda fayl obyektini qaytaradi.

f = open("notes.txt", "w", encoding="utf-8")
f.write("learn python\n")
f.close()   # ochgan narsangizni doim yoping

Matn fayllari uchun har doim encoding="utf-8" bering, shunda kodingiz har bir operatsion tizimda bir xil ishlaydi.

Fayl rejimlari

Rejim Ma'nosi
"r" O'qish (standart). Fayl bo'lmasa xato beradi.
"w" Yozish. Faylni yaratadi yoki ustiga yozadi.
"a" Qo'shish. Oxiriga qo'shadi, mavjud kontentni saqlaydi.
"x" Yangi fayl yaratish. Allaqachon mavjud bo'lsa xato beradi.
"r+" O'qish va yozish.
"b" Binar rejim, boshqalar bilan birga ("rb", "wb").
"t" Matn rejimi (standart), boshqalar bilan birga.

with operatori (tavsiya etiladi)

Fayl ish tugagach har doim yopilishi kerak. with operatori uni siz uchun avtomatik yopadi — hatto blok ichida xato yuz bersa ham — shuning uchun close()'ni o'zingiz chaqirishingiz shart emas.

with open("notes.txt", "w", encoding="utf-8") as f:
    f.write("learn python\n")
    f.write("File I/O is important\n")
# fayl bu yerda avtomatik yopiladi

Fayllarni o'qish

Matnni o'qishning bir nechta usuli bor — hammasini birdan yoki qatorma-qator olishingizga qarab.

with open("notes.txt", "r", encoding="utf-8") as f:
    content = f.read()        # butun fayl bitta satr sifatida
    print(content)

Asosiy o'qish metodlari:

with open("notes.txt", "r", encoding="utf-8") as f:
    first = f.readline()
    print("First line:", first.strip())

with open("notes.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()
    print("Number of lines:", len(lines))

Fayl bo'ylab aylanish

Faylni qayta ishlashning eng toza va xotira uchun eng qulay usuli — uni to'g'ridan-to'g'ri aylanib chiqish. U bir vaqtning o'zida bitta qatorni o'qiydi, bu hatto juda katta fayllar uchun ham ishlaydi.

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

Yozish va qo'shish

"w" bilan ochish faylning ustiga yozadi; "a" mavjud kontentni saqlab, oxiriga qo'shadi. Satrlar ro'yxatini yozish uchun writelines() ishlating.

# Ustiga yozish
with open("notes.txt", "w", encoding="utf-8") as f:
    f.write("line 1\n")

# Qo'shish
with open("notes.txt", "a", encoding="utf-8") as f:
    f.writelines(["line 2\n", "line 3\n"])

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

Binar fayllar bilan ishlash

Xom baytlarni o'qish yoki yozish uchun rejimga "b" qo'shing — rasmlar, audio yoki istalgan matnsiz fayl uchun. Binar rejimda siz str emas, bytes bilan ishlaysiz.

data = bytes([80, 121])   # "Py" uchun baytlar

with open("data.bin", "wb") as f:
    f.write(data)

with open("data.bin", "rb") as f:
    print(f.read())   # b'Py'

Fayllarni tekshirish va o'chirish

os va pathlib modullari faylning mavjudligini tekshirish, hajmini olish va uni o'chirish imkonini beradi.

import os

with open("temp.txt", "w", encoding="utf-8") as f:
    f.write("temporary\n")

print(os.path.exists("temp.txt"))   # True
print(os.path.getsize("temp.txt"))  # bayt hajmi

os.remove("temp.txt")
print(os.path.exists("temp.txt"))   # False

Zamonaviy pathlib API'si shu amallarni obyektga yo'naltirilgan uslubda taklif etadi:

from pathlib import Path

path = Path("greeting.txt")
path.write_text("Hello from pathlib\n", encoding="utf-8")

print(path.read_text(encoding="utf-8"))
print(path.exists())   # True

path.unlink()          # faylni o'chirish

Xavfsiz JSON I/O misoli

import json

data = {"name": "Alice", "level": "intermediate"}

with open("user.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

with open("user.json", "r", encoding="utf-8") as f:
    loaded = json.load(f)

print(loaded)