Python File I/O සිංහලෙන්: ෆයිල් වලට ලියමු, එකතු කරමු | Write & Append Files SC Guide

ෆයිල් I/O: ෆයිල් වලට ලියමු, එකතු කරමු
කට්ටියටම ආයුබෝවන්! ✋ ඔන්න ඉතින් අදත් අපි ආවා Software Engineering වල තවත් වැදගත් දෙයක් ගැන කතා කරන්න. Computer science, Software Development පැත්තේ ඉන්න අයට වගේම, පොඩ්ඩක් හරි Programming කරන අයට මේ File Input/Output (I/O) කියන එක නැතුවම බෑ. මොකද, අපේ Program එකක් run වෙලා ඉවර උනාම ඒකේ තොරතුරු, Data ටික save කරගන්න ඕනනේ. නැත්නම් ඊළඟ පාර Program එක run කරනකොට කලින් කරපු වැඩ ඔක්කොම ආයෙත් කරන්න වෙනවා. හිතන්නකෝ, ඔයා Game එකක් Play කරනවා, save කරන්න බෑ. හැම පාරම මුල ඉඳන් පටන් ගන්න ඕන. ඒ වගේ වැඩක් තමයි මේ File I/O නැති උනොත් වෙන්නේ.
අද අපි විශේෂයෙන් කතා කරන්නේ Files වලට Data ලියන (Writing) සහ පවතින Files වලට තව Data එකතු කරන (Appending) හැටි ගැන. මේක බොහොම සරලයි වගේ පෙනුනත්, වැරදුනොත් ලොකු Data loss වෙන්න පුළුවන්. ඒ නිසා, හරියට තේරුම් අරගෙන පරිස්සමෙන් වැඩ කරන්න ඕනේ.
ෆයිල් I/O මොකක්ද මේ?
සරලවම කිව්වොත්, File I/O කියන්නේ අපේ Program එකකට External Files එක්ක කතා කරන්න පුළුවන් වෙන ක්රමයක්. I/O කියන්නේ Input/Output. මේකෙන් වෙන්නේ Program එකට Files වලින් Data කියවන්න (Read) සහ Files වලට Data ලියන්න (Write) පුළුවන් වෙන එක. සාමාන්යයෙන් Programs Run වෙන්නේ RAM (Random Access Memory) එකේ. RAM එක Temporary. Current Program එක run වෙනකම් විතරයි Data තියෙන්නේ. Program එක close කලොත්, හෝ Computer එක shutdown කලොත්, RAM එකේ තියෙන Data නැතිවෙලා යනවා. ඒත් Hard Drive එකේ (Permanent Storage) තියෙන Files වල Data හැමදාටම තියෙනවා.
ඉතින්, අපිට User Details, Game Scores, Configuration Settings වගේ දේවල් Permanent විදිහට save කරගන්න ඕන නම්, අපි Files භාවිතා කරන්න ඕනේ. Text Files, CSV Files, JSON Files වගේ විවිධ වර්ගයේ Files තියෙනවා. අද අපි වැඩිපුර අවධානය යොමු කරන්නේ Text Files වලට.
ෆයිල් වලට ලියන හැටි: 'w' mode එක
Files වලට Data ලියන්න ඕන නම්, අපි 'write' mode එක භාවිතා කරනවා. මේක Code එකේදී 'w'
කියලා තමයි define කරන්නේ. මේ 'w'
mode එක ගැන තේරුම් ගන්න ඕන ප්රධානම දේ තමයි, මේක කලින් තිබ්බ File එකක තිබ්බ Data ඔක්කොම මකා දාලා, අලුතෙන් ලියන එක (Overwrite)!
වැදගත්: ඔයා 'w'
mode එකෙන් File එකක් open කරනකොට, ඒ නමින් File එකක් කලින්ම තිබ්බා නම්, ඒකේ තියෙන Data ඔක්කොම නැතිවෙලා යනවා. අලුත්, හිස් File එකක් හැදෙනවා. File එකක් කලින් නොතිබුණා නම්, අලුත් File එකක් හැදෙනවා.
Python වල 'w'
mode එක භාවිතා කරලා Data File එකකට ලියන හැටි බලමු.
open()
Function එක
File එකක් එක්ක වැඩ කරන්න නම්, අපි මුලින්ම open()
function එක භාවිතා කරලා ඒක open කරගන්න ඕනේ. මේකට ප්රධාන Parameters දෙකක් දෙනවා:
- File Path/Name: අපි වැඩ කරන්න යන File එකේ නම හෝ Location එක.
- Mode: අපි File එක open කරන්නේ මොකටද කියලා. (e.g.,
'w'
for write,'a'
for append,'r'
for read)
File එක open කරාට පස්සේ, අපිට write()
method එක භාවිතා කරලා ඒකට Data ලියන්න පුළුවන්. වැඩේ ඉවර උනාට පස්සේ, close()
method එකෙන් File එක වහන්න අමතක කරන්න එපා. නැත්නම් Program එකෙන් අනවශ්ය විදිහට File එක Lock වෙලා තියෙන්න පුළුවන්, හෝ Data corrupt වෙන්න පුළුවන්.
උදාහරණය: Data File එකකට ලියමු
අපි 'my_data.txt'
කියලා File එකක් හදලා, ඒකට වාක්ය කිහිපයක් ලියමු.
# File එක 'w' (write) mode එකෙන් open කරනවා
# 'with' statement එක භාවිතා කිරීමෙන් File එක auto-close වෙනවා
with open('my_data.txt', 'w') as file:
file.write("ආයුබෝවන්, Software Engineering ලෝකයට!\n")
file.write("මේක අලුත් File එකක්, නැත්නම් තිබ්බ File එකක Data overwrite වෙනවා.\n")
file.write("අපි අද File I/O ගැන ඉගෙන ගන්නවා.\n")
file.write("දැන් ඔයාට 'my_data.txt' File එක open කරලා බලන්න පුළුවන්.\n")
print("Data 'my_data.txt' File එකට සාර්ථකව ලියා ඇත.")
මේ Code එක run කරාට පස්සේ, ඔයාගේ Program එක තියෙන තැන (හෝ define කරපු path එකේ) my_data.txt
කියලා File එකක් හැදිලා ඇති. ඒක Open කරලා බැලුවොත්, උඩ ලියපු වාක්ය ටික ඒක ඇතුලේ තියෙනවා පෙනේවි.
අවවාදය: දැන් මේ Code එක ආයෙත් run කරලා බලන්න. my_data.txt
File එකේ කලින් තිබ්බ Data ඔක්කොම නැතිවෙලා, මේ අලුත් Data ටික ආයෙත් ලියවිලා ඇති. ඒකයි 'w'
mode එකේ ස්වභාවය. ඒ නිසා මේක පරිස්සමෙන් භාවිතා කරන්න ඕනේ.
ෆයිල් වලට එකතු කරන හැටි: 'a' mode එක
අපි File එකක තියෙන Data නැති නොකර, ඒකට අලුතෙන් තව Data එකතු කරන්න ඕන නම් (Append කරන්න), අපි 'append' mode එක භාවිතා කරනවා. මේක Code එකේදී 'a'
කියලා තමයි define කරන්නේ.
'a'
mode එකේ විශේෂත්වය තමයි, මේක කලින් තිබ්බ File එකක Data මකා දාන්නේ නෑ. ඒක File එකේ අන්තිමට ගිහින් අලුත් Data එකතු කරනවා. File එකක් කලින් නොතිබුණා නම්, අලුත් File එකක් හැදෙනවා. මේක 'w'
mode එකට වඩා ගොඩක් ආරක්ෂාකාරීයි Data නැතිවීම වලක්වා ගන්න.
උදාහරණය: Data File එකකට එකතු කරමු
අපි කලින් හදපු 'my_data.txt'
File එකටම තවත් වාක්ය කිහිපයක් එකතු කරමු. මේ පාර අපි 'a'
mode එක භාවිතා කරනවා.
# File එක 'a' (append) mode එකෙන් open කරනවා
with open('my_data.txt', 'a') as file:
file.write("\n") # අලුත් Line එකකින් පටන් ගන්න
file.write("මෙතනින් එහාට එකතු කරපු Data.\n")
file.write("අපිට තව තොරතුරු ගොඩක් මේ File එකට දාන්න පුළුවන්.\n")
file.write("File එකේ කලින් තිබ්බ Data වලට කිසිම හානියක් වෙන්නේ නෑ.\n")
print("Data 'my_data.txt' File එකට සාර්ථකව එකතු කර ඇත.")
මේ Code එක run කරලා my_data.txt
File එක Open කරලා බලන්න. කලින් තිබ්බ Data ටිකත් එක්කම, අලුතෙන් එකතු කරපු Data ටිකත් අන්තිමට ඇති. මේක Data Logging, Event Tracking වගේ දේවල් වලට ගොඩක් ප්රයෝජනවත්.
සැ.යු.: අපි file.write("\n")
කියලා අලුත් line එකක් දාගත්තේ, අපේ අලුත් Data කලින් තිබ්බ line එකටම එකතු නොවී, අලුත් line එකකින් පටන් ගන්න. නැත්නම් Data ඔක්කොම එක දිගට ලියවෙයි, කියවන්න අපහසුයි.
ප්රැක්ටිකල් ටිප්ස් සහ ප්රශ්න වලට විසඳුම්
File I/O එක්ක වැඩ කරනකොට මතක තියාගන්න ඕන වැදගත් කරුණු කිහිපයක් සහ පොදු ගැටලු වලට විසඳුම්:
1. with open(...)
භාවිතා කරන්න
අපි උදාහරණ වලදී දැක්කා වගේ, හැමවිටම with open(...) as file:
කියන Syntax එක භාවිතා කරන්න. මේකෙන් වෙන්නේ, Program එක File එකෙන් වැඩ ඉවර කරපු ගමන්, ඒක automatically close වෙන එක. File එක manually file.close()
වලින් close කරන්න අමතක උනොත්, File එක locked වෙලා තියෙන්න පුළුවන්, Data corruption වෙන්න පුළුවන්, නැත්නම් Program එක crashed වෙන්නත් පුළුවන්. with
statement එකෙන් මේ හැම ප්රශ්නයකටම විසඳුම් දෙනවා.
2. Permissions Errors
සමහර වෙලාවට ඔයාට File එකකට ලියන්න බැරි වෙන්න පුළුවන්. ඒකට හේතුව වෙන්න පුළුවන් Permissions. ඒ කියන්නේ, ඔයාගේ Program එකට ඒ particular folder එකේ Files modify කරන්න අවසර නැති එක. Windows වල නම් Admin privileges නැති වෙනවා. Linux/macOS වල නම් File Permissions (Read, Write, Execute) හරියට සෙට් වෙලා නැති වෙන්න පුළුවන්.
- විසඳුම:
- Program එක Run කරන්නේ Admin/Root User කෙනෙක් විදිහටද බලන්න.
- File එක/Folder එක Properties වලට ගිහින් Permissions බලන්න. Read & Write Permissions තියෙනවද කියලා බලන්න.
- වෙනත් Folder එකක File එකක් හදලා බලන්න. (e.g., Desktop, Documents)
3. Data Overwriting වලක්වා ගන්න
'w'
mode එක Data Overwrite කරන නිසා, වැදගත් Files එක්ක වැඩ කරනකොට ගොඩක් පරිස්සම් වෙන්න. වැරදිලා හරි 'w'
mode එකෙන් වැදගත් File එකක් Open කරොත්, ඒකේ තියෙන Data ටික අතුරුදහන් වෙලා යයි.
- හොඳම පුරුද්ද:
- වැදගත් Files modify කරන්න කලින් Backup එකක් ගන්න.
- User කෙනෙක්ගෙන් File overwrite කරනවද කියලා Confirm කරන්න අහන්න.
- File එකක් තියෙනවද නැද්ද කියලා check කරලා,
'a'
mode එක භාවිතා කරන්න පුළුවන්ද බලන්න. (e.g., Python වලos.path.exists()
භාවිතා කරන්න පුළුවන්)
4. Encoding
සමහර වෙලාවට Sinhala අකුරු වගේ Non-English Characters File එකකට ලියනකොට ප්රශ්න එන්න පුළුවන් (Junk characters පෙනෙන්න පුළුවන්). ඒකට හේතුව Encoding. UTF-8 කියන්නේ Standard Encoding එකක්.
# UTF-8 encoding එකත් එක්ක open කරන හැටි
with open('sinhala_text.txt', 'w', encoding='utf-8') as file:
file.write("ආයුබෝවන් ලංකාව!\n")
file.write("අපි සිංහලෙන් Program කරනවා.\n")
හැකි හැමවිටම encoding='utf-8'
කියලා දාන්න පුරුදු වෙන්න. එතකොට ඕනම භාෂාවක අකුරු වලින් වැඩ කරන්න පුළුවන්.
අවසන් වශයෙන්
හරි, ඉතින් අද අපි File I/O වල Writing ('w'
mode) සහ Appending ('a'
mode) ගැන විස්තරාත්මකව කතා කළා. Program එකක Data Permanent විදිහට Save කරගන්න එක කොච්චර වැදගත්ද කියලා දැන් ඔයාලාට පැහැදිලි ඇති. 'w'
mode එක Overwrite කරන බවත්, 'a'
mode එක Append කරන බවත් මතක තියාගන්න. ඒ වගේම, with open(...)
statement එක භාවිතා කිරීමෙන් File Handling එක පහසු සහ ආරක්ෂාකාරී වෙනවා. Permissions සහ Encoding වගේ දේවලුත් වැඩ කරනකොට මතක තියාගන්න ඕන.
මේ Concept එක Software Engineering වලදී දිනපතාම වගේ භාවිතා වෙනවා. Log Files ලියනකොට, Configuration Files update කරනකොට, Data Export/Import කරනකොට මේ File Writing/Appending Skills ඔයාට ගොඩක් ප්රයෝජනවත් වෙයි.
දැන් ඉතින් පරක්කු නොවී ඔයාලගේ Code Editor එක Open කරලා, මම දුන්න Examples ටික Try කරලා බලන්න. ඔයාලට වෙනත් Programming Language එකක මේක කරන්න ඕන නම්, ඒකේ Syntax එක පොඩ්ඩක් වෙනස් උනත්, Basic Concept එක මේකමයි. ඒ නිසා බය නැතුව Try කරන්න.
මේ Article එක ගැන ඔයාලගේ අදහස්, ප්රශ්න තියෙනවා නම් පහලින් Comment එකක් දාගෙන යන්න. අපි උත්තර දෙන්න ලෑස්තියි. තවත් මේ වගේ වැදගත් දෙයක් ගැන කතා කරන්න මුණගැහෙමු. එහෙනම්, ගිහින් එන්නම්! සුභ දවසක්! 👋