File Handling နှင့် Error Handling
Program တွေ ရေးတဲ့အခါ Data တွေကို အမြဲတမ်း Memory ထဲမှာပဲ သိမ်းထားလို့ မရပါဘူး။ Program ပိတ်လိုက်တာနဲ့ ပျောက်သွားမှာမို့လို့ပါ။ ဒါကြောင့် File တွေထဲမှာ သိမ်းဖို့ လိုလာပါတယ်။ နောက်ပြီး Code တွေ အလုပ်လုပ်နေတုန်း မထင်မှတ်ထားတဲ့ Error တွေ တက်လာရင် Program ကြီး ရပ်မသွားအောင် ဘယ်လို ထိန်းချုပ်မလဲ ဆိုတာကိုပါ ဒီ Module မှာ လေ့လာရပါမယ်။
File Handling (ဖိုင်များ အသုံးပြုခြင်း)
Section titled “File Handling (ဖိုင်များ အသုံးပြုခြင်း)”Python နဲ့ Text File တွေကို ဖတ်လို့၊ ရေးလို့ ရပါတယ်။ အဓိက Mode (၃) မျိုး ရှိပါတယ်။
"r"(Read): ဖတ်ဖို့ သီးသန့် (File မရှိရင် Error တက်မယ်)"w"(Write): အသစ်ရေးဖို့ (File ရှိပြီးသားဆိုရင် အဟောင်းတွေ အကုန်ဖျက်ပြီး အသစ်ရေးမယ်)"a"(Append): အဟောင်းတွေ မဖျက်ဘဲ အနောက်ကနေ ဆက်ရေးဖို့
File ထဲကို စာရေးခြင်း ("w" နှင့် "a")
Section titled “File ထဲကို စာရေးခြင်း ("w" နှင့် "a")”# "w" ကို သုံးပြီး အသစ်ရေးခြင်းwith open("test.txt", "w") as file: file.write("မင်္ဂလာပါ။\n") # \n ဆိုတာ နောက်တစ်ကြောင်း ဆင်းတာပါ file.write("Python ကနေ ကြိုဆိုပါတယ်။\n")
# "a" ကို သုံးပြီး အနောက်ကနေ ဆက်ရေးခြင်းwith open("test.txt", "a") as file: file.write("ဒါကတော့ နောက်ထပ် ထပ်ထည့်လိုက်တဲ့ စာပါ။")မှတ်ချက်: with open(...) as file: ကို သုံးတာက အလုပ်ပြီးရင် File ကို အလိုအလျောက် ပိတ် (Close) ပေးသွားအောင်လို့ပါ။ ဒါမှ Memory မစားမှာပါ။
File ထဲက စာဖတ်ခြင်း ("r")
Section titled “File ထဲက စာဖတ်ခြင်း ("r")”# "r" ကို သုံးပြီး ဖတ်ခြင်းwith open("test.txt", "r") as file: # အကုန်လုံးကို တစ်ခါတည်း ဖတ်ချင်ရင် content = file.read() print(content)
# တစ်ကြောင်းချင်းစီ ဖတ်ချင်ရင် # for line in file: # print(line.strip()) # strip() က အပို Space တွေကို ဖယ်ပေးပါတယ်Error Handling (အမှားများ ဖြေရှင်းခြင်း)
Section titled “Error Handling (အမှားများ ဖြေရှင်းခြင်း)”Code ရေးတဲ့အခါ Error တွေ တက်တတ်ပါတယ်။ ဥပမာ - မရှိတဲ့ File ကို သွားဖတ်တာ၊ ဂဏန်းကို စာသားနဲ့ သွားပေါင်းတာ မျိုးတွေပါ။ Error တက်ရင် Program ကြီး Crash ဖြစ်ပြီး ရပ်မသွားအောင် try နဲ့ except ကို သုံးပြီး ထိန်းချုပ်လို့ ရပါတယ်။
အခြေခံ try...except
Section titled “အခြေခံ try...except”ဥပမာ - ဂဏန်းတစ်ခုကို သုည (0) နဲ့ စားရင် ZeroDivisionError တက်ပါတယ်။
try: # Error တက်နိုင်တဲ့ Code ကို ဒီထဲမှာ ရေးပါတယ် result = 10 / 0 print(result)except ZeroDivisionError: # Error တက်ခဲ့ရင် Program မရပ်သွားဘဲ ဒီထဲက Code အလုပ်လုပ်ပါမယ် print("အမှား: ဂဏန်းကို သုညနဲ့ စားလို့ မရပါဘူး။")Error အမျိုးအစား ခွဲခြားခြင်း
Section titled “Error အမျိုးအစား ခွဲခြားခြင်း”Error အမျိုးအစားပေါ် မူတည်ပြီး မတူညီတဲ့ အဖြေတွေ ပြပေးလို့ ရပါတယ်။
try: age = int(input("အသက် ဘယ်လောက်လဲ? ")) print(f"သင်ဟာ နောက်နှစ်မှာ {age + 1} နှစ် ပြည့်ပါမယ်။")except ValueError: # User က ဂဏန်းမထည့်ဘဲ စာသားတွေ ထည့်လိုက်ရင် ဒီ Error တက်ပါမယ် print("ကျေးဇူးပြု၍ ဂဏန်းသာ ထည့်ပါ။")except Exception as e: # တခြား မထင်မှတ်ထားတဲ့ Error တွေ တက်လာရင် ဖမ်းဖို့ပါ print(f"တစ်ခုခု မှားယွင်းနေပါတယ်။ Error: {e}")finally (ဘာပဲဖြစ်ဖြစ် အလုပ်လုပ်မယ်)
Section titled “finally (ဘာပဲဖြစ်ဖြစ် အလုပ်လုပ်မယ်)”Error တက်တက်၊ မတက်တက် နောက်ဆုံးမှာ မဖြစ်မနေ လုပ်ရမယ့် အလုပ်တွေ (ဥပမာ - File ပိတ်တာ၊ Database အဆက်အသွယ် ဖြတ်တာ) အတွက် finally ကို သုံးပါတယ်။
try: file = open("data.txt", "r") print(file.read())except FileNotFoundError: print("ဖိုင် ရှာမတွေ့ပါ။")finally: print("အလုပ်လုပ်ခြင်း ပြီးဆုံးပါပြီ။") # file.close() စသဖြင့် ဒီနေရာမှာ ရေးလေ့ရှိပါတယ်ဒီလို Error Handling တွေကို စနစ်တကျ သုံးတတ်ရင် သင့်ရဲ့ Program ဟာ User တွေအတွက် ပိုပြီး အဆင်ပြေ ချောမွေ့စေမှာ ဖြစ်ပါတယ်။