கோப்புகளின் வரிசையில் நாம் நிறைவாகப் பார்க்க இருப்பது காற்புள்ளி கோப்புகள்(கா.கோப்புகள்). தரவுகளைப் பகுப்பாய்வு செய்ய, எளிதாகப் பரிமாறிக்கொள்ள, எந்தவொரு பிரத்தியேக மென்பொருளும் இன்றி திறக்க முடிகிற வசதி என நிறையக் காரணங்களுக்காக உலகம் முழுக்கவே காற்புள்ளி கோப்புகள் அதிக அளவில் பயன்படுத்தப்படுகின்றன. புரிந்துகொள்ளவும், கையாளவும் கூட இலகுவானவை கா.கோப்புகள், இதை ஆங்கிலத்தில் Comma Separated Values (csv) என்கிறார்கள்.
நிறையத் தரவுகள் இருக்கின்றன அதிலிருந்து ஒரு முடிவு எட்டப்பட வேண்டும் என்றால், அத்தரவுகளைச் சேமிக்க கா.கோப்புகள் ஒரு சிறந்த தேர்வு.
தரவுகள் எப்படி சேமிக்கப்படுகின்றன?
Ram, Rasipuram, 27
Raheem, Ramanathapuram, 28
John, Jolarpettai, 29
இதேபோல எவ்வளவு தரவுகளை வேண்டுமென்றாலும் கா.கோப்புகளில் சேர்த்துக்கொண்டே போகலாம். ஒரு தரவையும் இன்னொன்றையும் வேறுபடுத்திக்காட்டக் காற்புள்ளியைப் பயன்படுத்தியிருக்கிறோம். காற்புள்ளி மட்டும்தான் அதன் தலையெழுத்தா? ‘:’, ‘;’, ‘tab’ போல வேறெதையும் பயன்படுத்த இயலாதா என்றால், தாராளமாகப் பயன்படுத்தலாம். ஆனால் கா.கோப்புகளுக்கான முன்னிருப்பாக(default) ‘,’யே இருக்கிறது. நிரலானார்கள் தங்கள் தேவைக்கேற்ப அதை மாற்றிக்கொள்ளலாம்.
சரி, ஒரு கா.கோப்பினை உருவாக்குவது எப்படி?
உரைத் தொகுப்பியில்(text editor) மேலே நாம் பார்த்த தரவுகளை அப்படியே தட்டச்சு செய்யுங்கள். கணினியில் “data.csv” என்ற பெயரில் சேமித்துக்கொள்ளுங்கள். இப்போது அதைத் திறந்து பார்த்தால் பின்வரும் படத்திலிருப்பது போலத் தோன்றும்.
கா.கோப்புகளை பைத்தானில் பயன்படுத்தப் பிரத்தியேகமாக csv என்றொரு தொகுப்பை நிரலுக்கு இறக்குமதி செய்ய வேண்டியிருக்கிறது. பின்வருமாறு அதைச் செய்துகொள்ளலாம்.
>>> import csv
கா.கோப்புகள் தயார், தொகுப்பையும் கூட இறக்குமதி செய்தாகிவிட்டது. இனி என்ன?
நிரல் எழுதவேண்டியதுதான்.
நிரல் 1: கா.கோப்புகளிடமிருந்து தரவுகளைப் பெறுதல்
எளிமையான நேரடியான நிரல். முதல் வரியில் csv தொகுப்பினை நிரலுக்கு இறக்குமதி செய்திருக்கிறோம். அடுத்ததாக சற்றுமுன் நாம் உருவாக்கிய “data.csv” கோப்பினை, ‘r’ செயல் வகையின் அடிப்படையில், “with” முதன்மைச்சொல்லைக்கொண்டு திறக்கிறோம். பைத்தானுக்கும், கா.கோப்புக்குமான இணைப்பாக csv_file என்னும் அடையாளங்காட்டிச் செயலாற்றுகிறது.
இப்போது கா.கோப்புகளின் தரவுகளைப் பெறுவதற்கு என்றே, csv தொகுப்பு பிரத்தியேகமாகத் தரும் reader() என்ற மு.வ.செயல்பாட்டினைக் கொண்டு, “data.csv”வில் உள்ள தரவுகளை நிரலுக்குக் கொண்டுவந்து csv_reader என்னும் அடையாளங்காட்டியில் சேமிக்கிறோம்.
இறுதியாக, for loopஐ கொண்டு ஒவ்வொரு வரியாக, கா.கோப்புகளின் இறுதிவரை சென்று அச்சிடுகிறோம்.
வெளியீடு
நிரல் 2: கா.கோப்புகளின் தரவுகளை அகராதியின் தரவுகளாக மாற்றுதல்
மேலே பார்த்த நிரலுக்கும் இதற்கும் பெரிய வேறுபாடு இல்லை. இதில் தரவுகளைப் பெற்று அதை அகராதி தரவு வகையின் கீழ் கொண்டுவந்திருக்கிறோம் அவ்வளவுதான். இதற்கு நமக்குப் பயன்படுபவர், csv தொகுப்புக்கு உள்ளேயிருக்கும் DictReader().
வெளியீடு:
நிரல் 3: கா.கோப்புகளில் தரவுகளை எழுதுதல்
தரவுகளைப் பெற்றுக்கொண்டே இருக்கிறோமே? அவற்றை எழுத இயலாதா என்பவர்களுக்கான நிரல் இது. முதலில் எழுதவேண்டிய தரவுகளைப் பட்டியலில் தயாராக வைத்திருக்கிறோம், அதனை “data” என்ற அடையாளங்காட்டிச் சுட்டிக்கொண்டிருக்கிறது.
தரவுகளை எழுத “output.csv” என்ற கோப்பினை, ‘w’ செயல் வகையைக்கொண்டு, “with” முதன்மைச்சொல்லின் மூலம் திறந்திருக்கிறோம். பிறகு csv தொகுப்பிற்கு உள்ளேயிருக்கும் writer() மு.வ.செயல்பாட்டின் மூலம் கா.கோப்பினில் எழுத நிரலைத் தயார் செய்கிறோம்.
இறுதியாக “data” அடையாளங்காட்டியில் உள்ள ஒவ்வொரு பட்டியல் தரவாக எடுத்து, அதை ஒரு வரியென கா.கோப்பினில் எழுதுகிறோம். பட்டியலில் உள்ள தரவுகளை ஒவ்வொன்றாக எடுத்துப் பயணிக்க for loop பயன்படுகிறது.
கணினியில் நீங்கள் குறிப்பிட்டிருக்கும் பாதையில், உருவாக்கி எழுதிய கா.கோப்பு இடம்பெற்றிருக்கிறதா என்பதை ஒருமுறை சரிபார்த்துக் கொள்ளுங்கள்.
வெளியீடு:
நிரல் 4: கா.கோப்பு குறித்த விவரங்களை நிரலுக்கு வழங்குதல்
முதலில் கீழே இருக்கும் கா.கோப்பு கொண்டிருக்கும் தரவுகளைப் பார்த்துவிடுங்கள்.
கா.கோப்புகள் ஏன் கையாள இலகுவானது என்பதை இந்த நிரலில் விளங்கும். காற்புள்ளி மட்டுமல்ல முக்கால் புள்ளியைக்(:) கொண்டும் தரவுகளைப் பிரிக்க இயலும் என்பதை ஏற்கனவே பார்த்தோம். அப்படி மாற்றும்பொழுது அதை நிரலுக்கு சொல்லவிடுவது நலம். “நீ பாட்டுக்குத் தரவுகளைப் பிரிக்கக் காற்புள்ளியை மட்டும் தேடிக்கிட்டுத் திரியாத, இந்த கோப்பில் முக்கால் புள்ளி பயன்படுத்தப்பட்டு இருக்கு” என்று அன்புடன் சொல்ல delimiter அளவுரு தேவைப்படுகிறது.
மேலும் இந்த நிரலில் நாம் “Pudhu Jersey” என்றொரு தரவை பயன்படுத்தியிருக்கிறோம். அதை நிரல் இரண்டு வெவ்வேறு தரவுகளாகப் பிரித்துப் புரிந்துகொள்ளும் அபாயம் இருக்கிறது அல்லவா? எனவே, அது ஒற்றை தரவுதான் என்பதை நிரலுக்குச் சொல்லவேண்டியது அவசியம். “quotechar” என்ற அளவுரு இதற்குத்தான் பயன்படுகிறது.
delimiter பயன்படுத்தப்படாத நிலையில், முக்கால் புள்ளியோடு அப்படியே தரவுகளை அச்சிட்டுவிடுகிறது நிரல், அதை ஒருமுறை முயன்றுபாருங்களேன்.
நிரல் 5: கா.கோப்பினில் அடுத்த வரிக்குச் செல்வது எப்படி?
கோப்புகளில் அடுத்த எந்த வரிக்குச் செல்வது என்பது குறித்து ஒவ்வொரு இயங்குதளமும் தங்களுக்கு என பிரேத்தியகமான ஒரு முறையைப் பின்பற்றுகின்றன. ஆனால் ஒரு நிரலை ஒவ்வொரு இயங்குதளத்திற்கும் ஏற்றார்போல ஒவ்வொருமுறையும் மாற்றிக்கொண்டே இருக்கவா முடியும்? ஒரே நிரல் தான், அது எல்லா இயங்குதளங்களுக்கும் பொதுவான ஒன்றாக இருத்தல் வேண்டும்.
அதற்காகத்தான் இந்த நிரலில் “newline” என்ற அளவுருவைப் பயன்படுத்தி இருக்கிறோம். “newline=”” என்ற அளவுருவை நிரலில் தருவதன் மூலம், “குறிப்பிட்ட இந்த இயங்குதளத்தில் ஒரு வரியைக் கோப்பினில் எழுதியபிறகு அடுத்த வரிக்குச் செல்வதற்கு என்ன முறை பின்பற்றப்படுகிறதோ, அதைச் செயல்படுத்தவும். நன்றி” என்ற தகவலை நிரலுக்குத் தருகிறோம்.
இதன்மூலம் எந்தவொரு சிக்கலும் இல்லாமல், ஒரு எழுதப்பட்டு உடன் அடுத்தவரிக்கு நிரல் ஆர்ப்பாட்டமில்லாமல் பயணிக்கிறது.
நிரல் 6: வியாபாரத் தரவுகளைப் பகுப்பாய்வு செய்தல்
பின்வரும் படத்தில் “sales.csv” கோப்பினில் உள்ள தரவுகள் இடம்பெற்றுள்ளன.
1) கா.கோப்பினில் உள்ள வியாபாரத் தரவுகளை, நிரலில் அகராதியாக மாற்றியிருக்கிறோம்
2) product_revenue என்ற மற்றுமொரு அகராதியை உருவாக்கி, அதில் பொருட்களின் பெயர்களைச் சாவியாகவும், அவற்றை விற்றதன் மூலம் ஈட்டிய மொத்த வருவாயைத் தரவுகளாகவும் சேமிக்க வழிவகை செய்திருக்கிறோம்.
3) கா.கோப்பினில் உள்ள ஒவ்வொரு வரியாக எடுத்து, அதில் குறிப்பிட்ட பொருள் ஏற்கனவே அகராதியில் இடம்பெற்றிருக்கிறதா என்று பார்க்கிறோம்.
4) ஒருவேளை இடம்பெற்றிருந்தால், அதன் முந்தைய வருவாயோடு புதிய வருவாயின் மதிப்புக் கூட்டப்படும்
5) இடம்பெற்றிருக்காவிட்டால், பொருளும் அதன் முதல் வருவாயும் அகராதியில் சேமிக்கப்படும்
6) இறுதியில் பொருட்கள் அவை ஈட்டிய மொத்த வருவாயின் பட்டியல்(அகராதியாக) அச்சிடப்படுகிறது.
வெளியீடு:
நிரல் 7: கா.கோப்புகளைக் குறிப்பகமாக(log) பயன்படுத்துதல்
கணினியில் குறிப்பகம் மிக முக்கிய பங்காற்றுகிறது. கணினியின் ஒட்டுமொத்த செயல்பாடுகளையும்(யார் எத்தனை மணிக்கு வந்து என்ன செய்தார்கள் உள்ளிட்ட மொத்த விவரங்கள்) ஒரு கோப்பினில் சேமித்து வைப்பதே குறிப்பகம் எனப்படும்.
அதுபோன்ற ஒன்றை இந்த நிரலில் முயன்று பார்த்திருக்கிறோம். ஒவ்வொருமுறை இந்த நிரல் இயங்கும்போதும், அதில் குறிப்பிடப்பட்டு இருக்கும் பெயர், செயலோடு சேர்த்து, எந்த தேதியில் எத்தனை மணிக்கு உள்ளிட்ட விவரங்களையும் கா.கோப்பினில் சேமித்து வைத்திருக்கிறோம்.
தேதியும், நேரமும் இந்த நிரலுக்குத் தேவைப்படுகிறது அல்லவா? எனவே datetime என்ற தொகுப்பை இறக்குமதி செய்திருக்கிறோம். அதுதரும் now(), isoformat() உள்ளிட்ட மு.வ.செயல்பாடுகளும் இந்நிரலில் பயன்படுத்தப்பட்டு இருக்கின்றன.
வெளியீடு:
நிரல் 8: அகராதிகளின் பட்டியலை கா.கோப்பினில் எழுதுதல்
ஒரு பட்டியலில் மூன்று அகராதிகள் இடம்பெற்றுள்ளன. அவற்றை கா.கோப்பினில் எழுதுகிறோம். ஒற்றை வரியில் இந்த நிரல் குறித்து இப்படிச் சொல்லலாம். அத்தியாயத்தின் கடைசி நிரலை “Dry Run”ற்கு நேர்ந்துவிடுவது தானே உலகவழக்கம்.
வெளியீடு:
இந்த அத்தியாயத்தோடு கோப்புகளைக் கையாளுதல் நிறைவு பெறுகிறது.
(தொடரும்)