நிரலும் கோப்பும் இணைந்து செய்யச் சாத்தியமுள்ள செயல்பாடுகள் அனைத்தையும் இந்த அத்தியாயத்தில் காணவிருக்கிறோம். இனி நாம் எழுதப்போகும் நிரல்கள் அனைத்திலும் with என்ற முதன்மைச் சொல்லைப் பயன்படுத்தித் தான் கோப்புகளைத் திறந்து உறவாட இருக்கிறோம். காரணம் என்னவென்றால், கோப்புகளைத் தொடர்புகொள்ளும்போது எழும் பிழைகளை(Errors) எல்லாம் with தானாகவே சமாளித்துக்கொள்ளும், நிரலாளர் இதற்காக எந்தவொரு பிரத்தியேக வரிகளையும் எழுதத் தேவையில்லை. மாறாக open() மு.வ.செயல்பாட்டைப் பயன்படுத்தினால் பிழைகளைக் கையாள வேண்டிய முழு பொறுப்பும் நிரலாளர் வசமே இருக்கும். எனவே withஐ பயன்படுத்திக் கோப்புகளைத் திறப்பது ஒரு நல்ல அணுகுமுறையாகப் பார்க்கப்படுகிறது.
நிரல் 1: கோப்பினைத் திறத்தல்
நிரலின் முதல் வரியில் எந்தவொரு குழப்பமும் இல்லை, கோப்பு சேமிக்கப்பட்டிருக்கும் பாதையை அது கொண்டிருக்கிறது. நமக்குப் புதிதாக இருப்பது அடுத்த வரி தான், with முதன்மைச் சொல்லைப் பயன்படுத்தி மேலே குறிப்பிடப்பட்டுள்ள பாதையில் இருக்கும் கோப்பினை ‘r’ செயல்வகையின் அடிப்படையில் திறக்கிறோம். இதில் file எனும் அடையாளங்காட்டி நிரலுக்கும் கோப்புக்கும் இடையில்
ஒரு பாலமாகச் செயல்படுகிறது. மேலும் கோப்பில் உள்ள வரிகளை ஒவ்வொன்றாக அணுகுவதற்கும் file அடையாளங்காட்டியே பயன்படுகிறது.
கோப்பு திறக்கப்பட்டு விட்டது, read() மு.வ.செயல்பாட்டைக் கொண்டு அதிலுள்ள(கோப்பு) தரவுகள் அனைத்தையும் பெற்று சரமாக அச்சிடுகிறோம். போன அத்தியாயத்தில் எழுதிய அத்தனை நிரல்களிலும் close()ஐ பயன்படுத்தியிருந்தது நினைவிருக்கலாம். கோப்பும் நிரலும் தொடர்புகொள்வதற்காகக் கணினி தனது மெமரி உள்ளிட்ட சில வளங்களை வழங்குகிறது. தேவை முடிந்தபின் அதைக் கணினியிடமே திரும்ப ஒப்படைக்கும் சடங்கை close() செய்கிறது. ஆனால் நிரலில் with பயன்படுத்தப்படும் பட்சத்தில் close() குறித்தெல்லாம் நிரலாளர் யோசிக்க வேண்டியதில்லை, அந்த வேலையையும் சேர்த்தே with பார்த்துக்கொள்ளும்.
வெளியீடு:
நிரல் 2: கோப்பில் எழுதுதல்
நிரலின் இரண்டாம் வரியில் உள்ள சரத்தைத் தான் கோப்பில் எழுத இருக்கிறோம், ‘\n’ஐ பின்தொடர்ந்து வருவனவற்றைத் தனது அடுத்த வரிக்குக் கோப்பு அனுப்பி வைக்கும். ஆக சரம் ஒன்றுதான் என்றாலும், அவை இரண்டு வரிகளாகக் கோப்பினில் எழுதப்பட்டிருக்கும்.
அதே நிரலைக்கொண்டு எழுதியதைப் பெற்று அச்சிட்டு இருக்கிறோம்.
வெளியீடு
நிரல் 3: கோப்பின் தரவுகளோடு பின்னொட்டுதல்
‘w’ செயல்வகையில் ஒரு சிக்கல் உண்டு. நிரலை இயக்கும்போதெல்லாம் கோப்புகள் அதே பெயரில் புதிதாக உருவாக்கப்படுகின்றன, இதன் காரணமாக அவற்றில் (கோப்புகளில்) சேமிக்கப்பட்டுள்ள முந்தைய தரவுகள் அனைத்தும் அழிக்கப்படுகின்றன. ஒரே தரவுகள் தான், ஒவ்வொருமுறையும் அவை அழிக்கப்பட்டு எழுதப்படுகின்றன.
நிரலின் முதல் இயக்கத்தில் இரண்டு வரிகள் எழுதப்பட்டுள்ளன, அடுத்த நான்கு வரிகளை இரண்டாம் இயக்கத்தில் எழுதிக்கொள்ளலாம் என்கிற ஏற்பாட்டை ‘w’வை நம்மால் செய்ய இயலாது.
இதற்கு வேறு வழியே இல்லையா என்றால், இருக்கிறது என்கிறது ‘a’. அப்படியென்றால் append என்று பொருள்.
‘a’ செயல்வகை ஏற்கனவே உருவாக்கப்பட்டுள்ள கோப்பின் இறுதியிலிருந்து புதிய தரவுகளை எழுத ஆரம்பிக்கிறது.
வெளியீடு
நிரல் 4: கோப்பின் தரவுகளைப் புதுப்பித்தல்
r+(read and write) என்ற செயல்வகை கோப்புகளில் உள்ள தரவுகளைப் பெறவும், புதியதை எழுதவும் பயன்படுகிறது. இந்நிரலோடு தொடர்பிலிருக்கும் கோப்பினில் எங்கெல்லாம் “Hello, World” வருகிறதோ, அங்கெல்லாம் “Greetings!” என்ற சொல்லைக்கொண்டு புதுப்பிக்கிறோம். இதைச் சாத்தியப்படுத்த replace() மு.வ.செ நிரலுக்கு உள்ளே வருகிறது. முதல் அளவுருவாக என்ன சொல் என்பதையும், எதைக்கொண்டு புதுப்பிக்கிறோம் என்பதை இரண்டாம் அளவுருவாகவும் அனுப்பிவைக்கிறோம். அப்படி மாற்றப்பட்ட மொத்த தரவுகளையும் updated_data அடையாளங்காட்டிக்கு ஒதுக்கியிருக்கிறோம்.
இப்போது மாற்றம் செய்யப்பட்ட தரவுகளைக் கோப்பினில் எழுதவேண்டும். நிலை காட்டி கோப்பின் தொடக்கத்திலிருந்தால் தான், புதிய தரவுகள் முறையாக எழுதப்படும். எனவே file.seek(0) என்ற நிரல் வரியின் மூலம் நிலை காட்டியைக் கோப்பின் தொடக்கத்திற்குக் கொண்டுவந்து புதுப்பிக்கப்பட்ட தரவுகளை வெற்றிகரமாக எழுதுகிறோம்.
நிறைவாகப் புதிதாக எழுதியதைக் கோப்பிலிருந்து பெற்று, நிரலில் அச்சிட்டுக் காட்டியிருக்கிறோம்.
வெளியீடு
நிரல் 5: கோப்பினில் தரவுகளைத் தேடுதல்
ஒரு கோப்பினைத் திறந்து குறிப்பிட்ட ஒரு தரவு அதில் இடம்பெற்றிருக்கிறதா என்று பார்ப்பதே இந்நிரலின் நோக்கம். ‘r’ செயல்வகையின் அடிப்படையில் கோப்பினைத் திறந்து அதில் “test file” என்ற தரவு இடம்பெற்றிருக்கிறதா என்பதைக் கண்டறிந்து முடிவினை அச்சிட்டிருக்கிறோம்.
வெளியீடு
நிரல் 6: கோப்பினை அழித்தல்
உருவாக்கப்பட்ட எந்தவொரு கோப்பையும் நிரலிலிருந்தே அழிக்க இயலும். இதைச் சாத்தியமாக்க os என்ற தொகுதியை நிரலுக்கு இறக்குமதி செய்திருக்கிறோம். அதிலுள்ள remove() மு.வ. செயல்பாடு நிரலாளர் தரும் பாதையில் குறிப்பிட்ட அந்த கோப்பு சேமிக்கப்பட்டு இருக்கிறதா என்பதைச் சோதித்துப் பார்க்கிறது. அப்படியிருந்தால் அதைக் கணினியின் குமரியிலிருந்து நிரந்தரமாக அழிக்கிறது.
கோப்பு இல்லாத பட்சத்தில் அதற்குண்டான தகவலைப் பயனருக்குத் தெரிவிக்கிறது.
வெளியீடு
0
எழுத்துவடிவ கோப்புகளை எப்படிக் கையாள்வது என்பதைக் கடந்த இரண்டு அத்தியாயங்களில் விரிவாகப் பார்த்தோம். வரும் வாரம் பைனரி கோப்பு குறித்துப் பார்க்கவிருக்கிறோம்.
(தொடரும்).