5. උසස් මාතෘකා (Advanced Topics)

පාඩම 5.1: ගොනු කළමනාකරණය (File Handling)

බොහෝ විට, අපේ වැඩසටහන් වලට දත්ත ගොනුවකින් කියවීමට (උදා: settings, user data) හෝ දත්ත ගොනුවකට ලිවීමට (උදා: වාර්තා, logs) අවශ්‍ය වේ. Python මගින් මෙය ඉතා පහසුවෙන් කළ හැක.

ගොනු සමඟ වැඩ කිරීමේදී නිර්දේශිතම ක්‍රමය වන්නේ **with open(...)** යන්නයි. මන්ද, එය ඔබ වෙනුවෙන් ස්වයංක්‍රීයව ගොනුව වැසීම (close) සිදු කරන නිසා, දෝෂයක් ඇති වුවද, ගොනුව සුරක්ෂිතව පවතී.

ගොනුවකින් කියවීම (Reading from a File)

ගොනුවක් කියවීම සඳහා, අපි එය **'r' (read)** ආකාරයෙන් විවෘත කළ යුතුය.

අපේ පරිගණකයේ `my_notes.txt` නමින් පහත අන්තර්ගතය සහිත ගොනුවක් ඇතැයි සිතමු:

Learning Python in Sinhala.
This is the second line of the file.
File handling is an important topic.

උදාහරණය 1: සම්පූර්ණ අන්තර්ගතය කියවීම (.read())

try:
    with open('my_notes.txt', 'r') as file:
        content = file.read()
        print("--- File Content ---")
        print(content)
        print("--------------------")
except FileNotFoundError:
    print("Error: The file 'my_notes.txt' was not found!")

උදාහරණය 2: පේළියෙන් පේළිය කියවීම (Looping)

විශාල ගොනු සඳහා, සම්පූර්ණ ගොනුවම එකවර මතකයට (memory) ගැනීම වෙනුවට, පේළියෙන් පේළිය කියවීම වඩාත් කාර්යක්ෂම වේ.

try:
    with open('my_notes.txt', 'r') as file:
        for line in file:
            print(line.strip()) # .strip() මගින් අනවශ්‍ය හිස්තැන් සහ නව පේළි ඉවත් කරයි
except FileNotFoundError:
    print("Error: The file 'my_notes.txt' was not found!")

ගොනුවකට ලිවීම (Writing to a File)

ගොනුවකට ලිවීමට ප්‍රධාන ආකාර දෙකක් ඇත:

  • **'w' (Write - ලිවීම):** ගොනුවේ පැවති සියලුම දත්ත මකා අලුතින් ලියයි. ගොනුව නොමැති නම්, අලුත් ගොනුවක් නිර්මාණය වේ.
  • **'a' (Append - අගට එකතු කිරීම):** පැවති දත්ත නොමැකී, අලුත් දත්ත ගොනුවේ අවසානයට එකතු වේ. ගොනුව නොමැති නම්, අලුත් ගොනුවක් නිර්මාණය වේ.

උදාහරණය 1: ගොනුවකට අලුතින් ලිවීම ('w' mode)

with open('shopping_list.txt', 'w') as file:
    file.write("Milk\n")
    file.write("Eggs\n")
    file.write("Bread")

උදාහරණය 2: ගොනුවක අගට එකතු කිරීම ('a' mode)

with open('shopping_list.txt', 'a') as file:
    file.write("\nButter")

ගොනු සමග වැඩ කරන ආකාරය දැන් ඔබට පැහැදිලියි. නමුත් අපේ වැඩසටහන් ක්‍රියාත්මක වන විට අනපේක්ෂිත දෝෂ (errors) ඇතිවිය හැක.