လွယ်လွယ်ပြောရရင် File Handling ဆိုတာ Program ကနေ ဖိုင်တွေကို ဖတ်တာ၊ ရေးတာ၊ ပြင်တာပါ။ Program ပိတ်လိုက်လည်း ဒေတာ ကျန်နေအောင် ဖိုင်ထဲမှာ သိမ်းထားတာမျိုး။

ကျွန်တော် Python စသင်တုန်းက ဒေတာတွေက Program Run နေတုန်းပဲ ရှိတယ်၊ Program ပိတ်လိုက်ရင် အကုန်ပျောက်သွားတယ်လို့ ထင်ခဲ့တယ်။ တကယ်တော့ အဲဒါက တစ်ဝက်ပဲ မှန်တယ်။ List ထဲမှာပဲ ထားရင် ပိတ်လိုက်ရင် ပျောက်တယ်။ ဒါပေမယ့် ဖိုင်ထဲ ရေးထားလိုက်ရင် နောက်တစ်ခါ ပြန်ဖွင့်လည်း အဲဒီဒေတာ ပြန်ရတယ်။ ဒါကြောင့် File Handling က Python သင်တဲ့သူတိုင်း မဖြစ်မနေ တတ်ရတဲ့ အခြေခံပဲ။

ဖိုင်ကို ဖွင့်တာ၊ ပိတ်တာ

Python မှာ ဖိုင်ဖွင့်ဖို့ open() ကို သုံးတယ်။ အဓိက Mode သုံးမျိုးရှိတယ်။

r (read) — ဖိုင်ကို ဖတ်ဖို့ပဲ။ ဖိုင်မရှိရင် Error တက်တယ်။
w (write) — ဖိုင်ကို ရေးဖို့ပဲ။ ဖိုင်ရှိပြီးသားဆိုရင် အထဲက စာတွေအကုန် ဖျက်ပြီးမှ ရေးတယ်။ သတိထား၊ အဟောင်းပျောက်သွားမယ်။
a (append) — ဖိုင်အဆုံးမှာ ဆက်ရေးတာ။ အဟောင်းကို မဖျက်ဘူး။ Log ဖိုင်ရေးတဲ့အခါ ဒါကို သုံးတယ်။

ဥပမာ ဒီလိုပေါ့။


f = open("notes.txt", "r")
data = f.read()
print(data)
f.close()

ဒါပေမယ့် အခုခေတ်မှာ လူတိုင်း ဒီပုံစံထက် with ကို သုံးကြတယ်။ with က အလုပ်ပြီးတာနဲ့ ဖိုင်ကို အလိုလို ပိတ်ပေးတယ်။ ပိတ်ဖို့ မေ့သွားလို့ ဖိုင်ပျက်တာမျိုး မဖြစ်တော့ဘူး။


with open("notes.txt", "r") as f:
    data = f.read()
    print(data)

ကျွန်တော့်အကြံပေးချင်တာက အစကတည်းက with ကိုပဲ ကျင့်သုံးပါ။ close() ရေးဖို့ မေ့တာက Beginner တွေရဲ့ အဖြစ်အများဆုံး အမှားပဲ။

ဖိုင်ဖတ်တဲ့နည်း သုံးမျိုး

ဖိုင်ဖတ်ဖို့ နည်းသုံးမျိုးရှိတယ်။ ဘယ်တစ်ခုသုံးရမလဲဆိုတာ ဖိုင်အရွယ်အစားနဲ့ ကိုယ်လိုချင်တဲ့ပုံစံနဲ့ ဆိုင်တယ်။

read() — ဖိုင်တစ်ခုလုံးကို စာတစ်ပုဒ်တည်းအဖြစ် ဖတ်တယ်။ ဖိုင်သေးရင် အဆင်ပြေတယ်။
readline() — တစ်ကြောင်းချင်း ဖတ်တယ်။ တစ်ကြောင်းဖတ်တိုင်း နောက်တစ်ကြောင်းကို ရွှေ့သွားတယ်။
readlines() — စာကြောင်းအားလုံးကို List အဖြစ် ဖတ်တယ်။ တစ်ကြောင်းချင်းစီ Loop ပတ်ချင်ရင် ဒါက အဆင်ပြေတယ်။


with open("notes.txt", "r") as f:
    for line in f:
        print(line.strip())

ဖိုင်ကြီးတွေဆိုရင် read() နဲ့ တစ်ခါတည်း ဖတ်တာက Memory အများကြီး စားတယ်။ အဲဒီအခါ for loop နဲ့ တစ်ကြောင်းချင်း ဖတ်တာက ပိုလုံခြုံတယ်။

ဖိုင်ရေးတာ၊ ဆက်ရေးတာ

ဖိုင်ရေးတာကလည်း လွယ်တယ်။ write() ကို သုံးရုံပဲ။ တစ်ခုသတိထားရမှာက write() က စာကြောင်းအသစ်ကို အလိုလို မဆင်းပေးဘူး။ \n ကို ကိုယ်တိုင် ထည့်ရတယ်။


with open("notes.txt", "w") as f:
    f.write("ဒီနေ့ Python သင်တယ်\n")
    f.write("File Handling ကို နားလည်သွားပြီ\n")

w က အဟောင်းကို ဖျက်တယ်ဆိုတာ ပြန်သတိပေးချင်တယ်။ ကိုယ်က ရှိပြီးသားဖိုင်ကို ဖွင့်ပြီး w နဲ့ ရေးမိရင် အထဲက စာတွေ အကုန်ပျောက်သွားမယ်။ ဆက်ရေးချင်ရင် a ကိုသုံး။ ဒေတာသိမ်းတဲ့ Program မှာ ဒီအမှားက အကြီးဆုံးအမှားပဲ။

လက်တွေ့မှာ ဘယ်မှာသုံးလဲ?

File Handling ကို နေ့တိုင်းလိုလို တွေ့ရတယ်။

Log ဖိုင် — Program က ဘာဖြစ်ခဲ့လဲ မှတ်ထားတာ။ Error တက်ရင် Log ကို ပြန်ကြည့်ရုံပဲ။
Setting ဖိုင် — App က ကိုယ့်ရဲ့ Setting တွေကို ဖိုင်ထဲမှာ သိမ်းထားတာ။ နောက်တစ်ခါ ဖွင့်ရင် အရင် Setting အတိုင်း ပြန်ရတယ်။
CSV ဖိုင် — Excel နဲ့ ဖွင့်လို့ရတဲ့ ဒေတာဇယားတွေ။ ဒေတာခွဲခြမ်းစိတ်ဖြာတဲ့အလုပ်မှာ အများဆုံး သုံးတယ်။
Text ဖိုင် — Note App တွေ၊ To-do List App တွေက နောက်ကွယ်မှာ ဖိုင်ထဲပဲ သိမ်းထားတာများတယ်။

နောက်တစ်ဆင့်တက်ချင်ရင် csv Module နဲ့ CSV ဖတ်တာ၊ json Module နဲ့ JSON ဖိုင်ကိုင်တာတွေကို ဆက်လေ့လာပါ။ အခြေခံက ဒီမှာရေးခဲ့တဲ့ open() ပဲဖြစ်တယ်။

ဒီတစ်ခါတော့ ကိုယ်တိုင် notes.txt တစ်ခုဖွင့်ပြီး နှစ်ကြောင်းလောက် ရေးကြည့်ပါ။ Program ပိတ်ပြီးပြန်ဖွင့်လည်း ကိုယ့်စာက အဲဒီမှာရှိနေတာကို တွေ့ရင် File Handling ကို တကယ်နားလည်သွားပြီ။ 🙂

—

Avatar photo
Min SiThu
@itsmeminsithu

Software Engineer & Tech Content Creator

View all posts