பைத்தான் மற்றும் CSV கோப்புகள்: ஒரு மதிப்பெண் வினாக்கள், புத்தக வினா விடைகள் மற்றும் குறிப்புகள்
பைத்தான் நிரல் ஒன்று CSV (Comma Separated Values) கோப்புகளை எப்படிப் படிக்கிறது, எப்படி எழுதுகிறது என்பதை இப்பாடம் படிப்படியாகக் காட்டுகிறது. CSV கோப்பு Excel கோப்பிலிருந்து எப்படி வேறுபடுகிறது, CSV கோப்பை எழுதுவதற்கான விதிகள், csv.reader, csv.writer, கோப்பு முறைமைகள், dialect, ஒரு நெடுவரிசையின் அடிப்படையில் வரிசைப்படுத்துதல், DictReader, DictWriter இனக்குழுக்கள் ஆகியவை இதில் ஒவ்வொன்றாக விளக்கப்படுகின்றன.
இந்தப் பாடத்தைப் படியுங்கள்
முந்தைய பொதுத் தேர்வுகளில் கேட்கப்பட்டவை
இந்தப் பாடத்திலிருந்து 6 வினாக்கள் 6 முந்தைய பொதுத் தேர்வுகளில் கேட்கப்பட்டன. விடையையும் விளக்கத்தையும் காண எந்த வினாவையும் திறக்கவும்.
-
மார்ச் 2026
CRLF என்பதன் விரிவாக்கம் :விடையுடன் வினாத்தாளில் பார் →
-
மார்ச் 2025
ஏற்கனவே உள்ள கோப்பில் உள்ள தரவுகளில் சில மாற்றங்கள் செய்வதும், அல்லது மேலும் தரவை சேர்ப்பதையும் __________ என்று அழைக்கலாம்.விடையுடன் வினாத்தாளில் பார் →
-
மார்ச் 2024
CSV கோப்பானது ________ எனவும் அழைக்கப்படுகிறது.விடையுடன் வினாத்தாளில் பார் →
-
மார்ச் 2023
உருவப்படம் அல்லது இயங்குநிலை கோப்பு போன்று உரை அல்லாத கோப்புகளை கையாள பயன்படும் முறை :விடையுடன் வினாத்தாளில் பார் →
-
மே 2022
CRLF என்பதன் விரிவாக்கம் :விடையுடன் வினாத்தாளில் பார் →
-
மார்ச் 2020
CSV கோப்பானது பின்வருவனவற்றுள் எவ்வாறு அழைக்கப்பட்டுள்ளது ?விடையுடன் வினாத்தாளில் பார் →
பைத்தான் மற்றும் CSV கோப்புகள் பற்றி
நடுத்தரம் ~90 நிமிடப் படிப்பு
CSV கோப்பு ஒரு எளிய உரைக் கோப்பு. அதில் ஒவ்வொரு வரியும் ஒரு பதிவு; புலங்கள் காற்புள்ளிகளால் பிரிக்கப்படுகின்றன. ஏறக்குறைய எல்லா விரிதாள் (spreadsheet) மற்றும் தரவுதள நிரல்களும் இதைத் திறக்கவோ உருவாக்கவோ முடியும். அதனால்தான் அட்டவணைத் தரவை ஒரு நிரலிலிருந்து இன்னொரு நிரலுக்குக் கொண்டு செல்ல இது அடிக்கடி பயன்படுகிறது. Notepad இல் கூட ஒரு CSV கோப்பை உருவாக்கலாம்.
இந்த அலகில் open() மூலம் பைத்தானை இத்தகைய கோப்புடன் இணைக்கிறீர்கள், csv.reader() பயன்படுத்தி ஒவ்வொரு வரிசையையும் ஒரு பட்டியலாகப் படிக்கிறீர்கள், csv.writer() மூலம் வரிசைகளை எழுதுகிறீர்கள். பிறகு கடினமான சூழல்களைக் கையாளுகிறீர்கள்: காற்புள்ளிக்குப் பின் இடைவெளி உள்ள புலங்கள், மேற்கோள்குறிகள் அல்லது காற்புள்ளிகள் கொண்ட புலங்கள், | போன்ற வேறு பிரிப்பான் (delimiter), அகராதிகளாகப் படிக்க விரும்பும் தலைப்பு வரிசை கொண்ட கோப்புகள்.
CSV க்கும் XLS க்கும் உள்ள வேறுபாடு, ஒவ்வொரு கோப்பு முறைமையின் பொருள், writerow() க்கும் writerows() க்கும் உள்ள வேறுபாடு, DictReader எப்படி வேலை செய்கிறது என்பவை அடிக்கடி கேட்கப்படும் வினாக்கள். ஒரு கோப்பைப் படித்தல், ஒரு நெடுவரிசையின்படி வரிசைப்படுத்துதல், ஒரு வரிசையைச் சேர்த்தல் ஆகிய மூன்று பாடநூல் நிரல்களையும் நீங்களே தட்டச்சு செய்து இயக்கிப் பாருங்கள். தவறான முறைமை, விடுபட்ட import போன்ற சிறு பிழைகள் நிரல் இயங்கும்போதுதான் தெரியும்.
நீங்கள் கற்பவை
- CSV கோப்புக்கும் XLS கோப்புக்கும் உள்ள வேறுபாடுகளைக் கூறுதல்.
- காற்புள்ளிகளும் மேற்கோள்குறிகளும் கொண்ட புலங்கள் உட்பட, சரியான வடிவிலான CSV கோப்பை உரைத் தொகுப்பானில் உருவாக்குதல்.
- open(), csv.reader() பயன்படுத்தி ஒரு CSV கோப்பைப் பைத்தான் நிரலுக்குள் படித்தல்.
- கூடுதல் இடைவெளிகள் அல்லது வேறு பிரிப்பான் கொண்ட கோப்புகளைப் படிக்க skipinitialspace, பதிவு செய்த dialect களைப் பயன்படுத்துதல்.
- csv.writer(), writerow(), writerows() மூலம் வரிசைகளை எழுதுதல், சேர்த்தல்.
- sorted(), operator.itemgetter() பயன்படுத்தித் தேர்ந்தெடுத்த நெடுவரிசையின்படி வரிசைகளை வரிசைப்படுத்துதல்.
தொடங்குவதற்கு முன்
- பைத்தான் மாறிகள், மடக்குகள், அடிப்படைக் கோப்பு கையாளுதல்.
- பட்டியல்கள், டூப்பிள்கள், அகராதிகள்.
- விரிதாளின் அடிப்படைக் கருத்துகள்: வரிசைகள், நெடுவரிசைகள், தலைப்பு வரிசைகள்.
இந்த அத்தியாயத்தில் உள்ள தலைப்புகள்
பைத்தான் மற்றும் CSV கோப்புகள் — விரிவான விளக்கம்
பைத்தானில் CSV கோப்புகளுடன் வேலை செய்தல்
CSV கோப்புகளும் Excel கோப்புகளும்
CSV கோப்பு அட்டவணைத் தரவை எளிய உரையாகச் சேமிக்கிறது; எனவே எந்த உரைத் தொகுப்பானும் (text editor) அதைத் திறக்கலாம். Excel (XLS) கோப்பு ஒரு இருமக் கோப்பு (binary file); அது ஒரு பணிப்புத்தகத்தின் எல்லாப் பணித்தாள்களையும் அவற்றின் உள்ளடக்கம், வடிவமைப்புடன் வைத்திருக்கிறது. அந்த வடிவத்தைப் படிக்க எழுதப்பட்ட நிரல்கள் மட்டுமே Excel கோப்புகளைப் படிக்க முடியும்; தரவை இறக்குமதி செய்யும்போது அவை அதிக நினைவகத்தை எடுத்துக்கொள்கின்றன. CSV கோப்புகள் அளவில் சிறியவை; நிரல்களுக்கு இடையே எளிதாகக் கொண்டு செல்லலாம்.
CSV கோப்பை எழுதுவதற்கான விதிகள்
ஒவ்வொரு பதிவும் தனி வரியில், ஒரு வரி முறிவுடன் (line break) முடியும். கடைசிப் பதிவுக்குப் பின் வரி முறிவு இருக்கலாம், இல்லாமலும் இருக்கலாம். புலப் பெயர்கள் கொண்ட ஒரு விருப்பத் தலைப்பு வரி முதலில் வரலாம். புலங்கள் காற்புள்ளிகளால் பிரிக்கப்படும். காற்புள்ளி, இரட்டை மேற்கோள்குறி அல்லது வரி முறிவு கொண்ட புலம் இரட்டை மேற்கோள்குறிகளுக்குள் வைக்கப்பட வேண்டும். அத்தகைய புலத்துக்குள் உள்ள இரட்டை மேற்கோள்குறி இருமுறை எழுதப்படும்; எனவே "Red" Rose என்பது """Red"" Rose" ஆக மாறும்.
csv.reader() மூலம் CSV கோப்பைப் படித்தல்
முதலில் csv தொகுதியை (module) import செய்து, open() மூலம் கோப்பைத் திறக்க வேண்டும். with open(...) as f: பயன்படுத்தினால், தொகுதி முடியும்போது கோப்பு தானாக மூடப்படும். csv.reader(f) ஒரு reader பொருளைத் தருகிறது; அதன் மீது மடக்கு இயக்கினால் ஒவ்வொரு வரிசையும் சரங்களின் பட்டியலாகக் கிடைக்கும். ஒவ்வொரு வரிசையிலிருந்தும் ஒரு நெடுவரிசையை எடுத்து, வரிசைப்படுத்தவோ வேறு செயலாக்கத்துக்கோ ஒரு பட்டியலில் சேர்க்கலாம்.
Dialect மற்றும் skipinitialspace
இயல்பாக, காற்புள்ளிக்குப் பின் வரும் இடைவெளியை reader அடுத்த புலத்தின் ஒரு பகுதியாகக் கருதுகிறது. skipinitialspace=True என அமைத்தால் அந்த முன் இடைவெளிகள் நீக்கப்படும். ஒரு கோப்பு வேறு அமைப்பைப் பயன்படுத்தினால், delimiter='|', quotechar அல்லது quoting=csv.QUOTE_ALL போன்ற அமைப்புகளுடன் csv.register_dialect() மூலம் ஒரு dialect ஐப் பதிவு செய்யலாம். பிறகு அந்த dialect பெயரை reader அல்லது writer க்கு அனுப்பலாம்.
வரிசைகளை எழுதுதலும் சேர்த்தலும்
எழுதுவதற்கு, கோப்பை 'w' முறைமையில் திறந்து csv.writer() மூலம் ஒரு writer ஐ உருவாக்குங்கள். 'w' முறைமை கோப்பை உருவாக்கும், அல்லது அதில் இருந்ததை மேலெழுதிவிடும். 'a' பழைய வரிசைகளைத் தொடாமல் புதிய வரிசைகளை இறுதியில் சேர்க்கும். writerow() ஒரு பட்டியலிலிருந்து ஒரு வரிசையை எழுதும்; writerows() பட்டியல்களின் பட்டியலிலிருந்து பல வரிசைகளை எழுதும். ஒவ்வொரு வரியும் எதைக் கொண்டு முடிய வேண்டும் என்பதை lineterminator அமைப்பு தீர்மானிக்கிறது.
DictReader மற்றும் DictWriter
csv.DictReader கோப்பின் முதல் வரிசையைத் திறவுகோல்களாக எடுத்துக்கொண்டு, அடுத்த ஒவ்வொரு வரிசையையும் ஒரு அகராதியாகத் தருகிறது. எனவே row[0] என்பதற்குப் பதிலாக row['Name'] என்று எழுதலாம். பாடநூல் வெளியீடு இந்த வரிசைகளை OrderedDict ஆகக் காட்டுகிறது; புதிய பைத்தான் பதிப்புகள் (3.8 முதல்) சாதாரண dict ஐத் தருகின்றன. csv.DictWriter ஒரு fieldnames பட்டியலை ஏற்று, writeheader() மூலம் தலைப்பை எழுதி, அகராதிகளை வரிசைகளாக எழுதுகிறது.
தவிர்க்க வேண்டிய பொதுவான தவறுகள்
- with இல்லாமல் கோப்பைத் திறந்து, பிறகு close() செய்ய மறப்பது. கோப்பு தானாக மூடப்பட with தொகுதியைப் பயன்படுத்துங்கள்.
- உரைத் தொகுப்பானில் பதிவுகளைத் தட்டச்சு செய்யும்போது காற்புள்ளியை விடுவது அல்லது தேவையற்ற இடைவெளிகளைச் சேர்ப்பது. ஒவ்வொரு புலமும் சரியாக ஒரு காற்புள்ளியால் பிரிக்கப்பட வேண்டும்; இல்லையென்றால் நெடுவரிசைகள் இடம் மாறும்.
- CSV கோப்பிலிருந்து படித்த மதிப்புகளை மாற்றாமல் கணக்கீடு செய்வது. csv.reader சரங்களைத் தருகிறது; எனவே முதலில் int() அல்லது float() பயன்படுத்துங்கள்.
- வரிசைகளைச் சேர்க்க மட்டுமே விரும்பும்போது கோப்பை 'w' முறைமையில் திறப்பது. 'w' ஏற்கனவே உள்ள உள்ளடக்கத்தை அழித்துவிடும்; சேர்க்க 'a' பயன்படுத்துங்கள்.
- கையால் ஒரு வரிசையை எழுதும்போது வெற்றுப் புலத்தை விட்டுவிடுவது. அதற்குப் பின் வரும் நெடுவரிசைகள் சரியான இடத்தில் இருக்க, இரண்டு காற்புள்ளிகளை அடுத்தடுத்து எழுதுங்கள்.
இவற்றை பயிற்சித் தேர்வு மூலம் சோதித்துப் பாருங்கள்; பிறகு விடையுடன் கூடிய வினாக்கள் பகுதியில் விரிவான விளக்கத்தைப் படியுங்கள்.
அடிக்கடி கேட்கப்படும் கேள்விகள்
CSV கோப்பு Excel கோப்பிலிருந்து எப்படி வேறுபடுகிறது?
CSV கோப்பு எளிய உரை: காற்புள்ளியால் பிரிக்கப்பட்ட புலங்கள், ஒரு வரிக்கு ஒரு பதிவு, வடிவமைப்பு இல்லை. Excel கோப்பு, பணித்தாள்களை அவற்றின் உள்ளடக்கம், வடிவமைப்புடன் சேமிக்கும் இருமக் கோப்பு. அந்த வடிவத்தைப் புரிந்துகொள்ளும் நிரல்கள் மட்டுமே அதைத் திறக்க முடியும்; தரவை இறக்குமதி செய்யும்போது அது அதிக நினைவகத்தைப் பயன்படுத்துகிறது.
கோப்பைத் திறக்க with கூற்றை ஏன் பயன்படுத்த வேண்டும்?
தொகுதிக்குள் பிழை ஏற்பட்டாலும், with தொகுதி முடியும்போது கோப்பு தானாக மூடப்படும். close() அழைக்க நினைவில் வைத்திருக்க வேண்டியதில்லை.
காற்புள்ளி கொண்ட ஒரு புலத்தை எப்படிச் சேமிப்பது?
முழுப் புலத்தையும் இரட்டை மேற்கோள்குறிகளுக்குள் வையுங்கள், எ.கா. "Chennai, Tamil Nadu". அப்போது reader அந்தக் காற்புள்ளியைப் பிரிப்பானாக அல்ல, உரையின் ஒரு பகுதியாகக் கருதும். மேற்கோள்குறிக்குள் உள்ள புலத்தில் வரும் இரட்டை மேற்கோள்குறி இரண்டு இரட்டை மேற்கோள்குறிகளாக எழுதப்படும்.
skipinitialspace என்ன செய்கிறது?
இயல்பாக, காற்புள்ளிக்குப் பின் உள்ள இடைவெளி அடுத்த புலத்தின் பகுதியாகவே வைக்கப்படும்; எனவே ' Chennai' போன்ற மதிப்புகள் கிடைக்கும். csv.reader க்கு அனுப்பியோ, பதிவு செய்த dialect இல் அமைத்தோ skipinitialspace=True தந்தால், அந்த முன் இடைவெளிகள் நீக்கப்படும்.
'w' முறைமைக்கும் 'a' முறைமைக்கும் உள்ள வேறுபாடு என்ன?
'w' புதிய கோப்பை உருவாக்கும், அல்லது ஏற்கனவே உள்ள கோப்பை எழுதுவதற்கு முன் காலியாக்கும். 'a' கோப்பைத் திறந்து, ஏற்கனவே உள்ள வரிசைகளுக்குப் பிறகு புதிய வரிசைகளை எழுதும்; எனவே கோப்பில் இருந்தது எதுவும் இழக்கப்படாது.
csv.reader க்குப் பதிலாக DictReader ஐ எப்போது பயன்படுத்த வேண்டும்?
நிலையைக் கொண்டு வரிசைகளைப் பட்டியல்களாகக் கையாண்டால் போதும் என்றால் csv.reader பயன்படுத்துங்கள். கோப்பில் தலைப்பு வரிசை இருந்தால் DictReader பயன்படுத்துங்கள்; ஒவ்வொரு வரிசையும் அகராதியாகக் கிடைப்பதால், ஒரு புலத்தை அதன் நெடுவரிசைப் பெயரால் குறிப்பிடலாம்.
ஒரு குறிப்பிட்ட நெடுவரிசையின்படி CSV தரவை எப்படி வரிசைப்படுத்துவது?
வரிசைகளை ஒரு பட்டியலில் படித்து, நெடுவரிசை 1 இன்படி வரிசைப்படுத்த sorted(data, key=operator.itemgetter(1)) பயன்படுத்துங்கள். இறங்கு வரிசைக்கு reverse=True சேருங்கள். operator தொகுதியை import செய்ய நினைவில் வையுங்கள்; கோப்பில் தலைப்பு வரிசை இருந்தால் அதைத் தவிர்த்துவிடுங்கள்.
கடைசியாகப் புதுப்பிக்கப்பட்டது 17 செப்டெம்பர் 2026