পাইথন দিয়ে CSV হ্যান্ডেলিং


প্রোগ্রামিং লাংগুয়েজ দিয়ে ডাটাবেজ হ্যান্ডল করা একটা অতি সাধারণ ব্যাপার। তবে এম এস এক্সেল শিট হ্যান্ডল করা খুব বেশি পরিচিত নয়। এই ব্লগটিতে আমি চেষ্টা করব পাইথন দিয়ে এম এস এক্সেল শিট হ্যান্ডল করার কৌশল আলোচনা করতে। হয়তো আপনার কখনও দরকার পড়বে না, অথবা পড়বে। যদি আপনি ব্লগটি শেষ পর্যন্ত পড়তে চান তো স্বাগতম। চলুন শুরু করা যাক।

এম এস এক্সেল ফাইল টাইপ

এম এস এক্সেল এর দুটি ফাইল টাইপ আছে – .csv (Comma Separated Values) ও .xlxs (Microsoft Excel Worksheet)। দুটোর পার্থক্য ঠিক চোখে পড়েনা। কাজ এবং ফাংশনালিটি প্রায় একই। তবে .xlxs বাইনারি ফাইল হওয়ায় Microsoft Excel বাতিত অন্য সফটওয়ারে ওপেন করলে পড়া অসম্ভব। কিন্তু .csv ফাইল যেকোনো text editor এ দেখা ও এডিট করা সম্ভব। আর এই কারনেই .csv হ্যান্ডল করা সহজ।

CSV বিস্তারিত

একটি csv ফাইল হল এক ধরণের plain text ফাইল যা ডেটা সাজানোর জন্য নির্দিষ্ট কাঠামো ব্যবহার করে। ধরুন Microsoft Excel এ salary.csv ফাইল দেখতে এরকম – CSV File View

কিন্তু text editor এ সেটি এরকম দেখাবে-

Name,Age,Salary
Ashik,24,20000
Sumon,28,22000
Mamun,34,40000

এই Name,Age,Salary লাইনটি হল হেডার আর পরের লাইনগুলো হল সারি বা row। দেখা যাচ্ছে ভ্যালুগুলো কমা দ্বারা পৃথক করা আছে। এই কমা কে বলা হয় delimiter। অন্যান্য delimiter গুলোর মধ্য ট্যাব, :, ; বেশি ব্যাবহার হয়।

কিভাবে রিড করতে হয়?

আমরা csv লাইব্রেরী ব্যবহার করতে পারি। পাইথনে csv মডিউল বিল্ড ইন থাকে। এর open() মেথডের মাধ্যমে csv ফাইল রিড করা যায়। উপরের csv ফাইল রিড করার কোড হবে –

import csv
with open('salary.csv', 'r') as csv_file:
    reader_obj = csv.reader(csv_file,delimiter = ',')
    for row in reader_obj:
        print(row)

কোডটির আউটপুট হবে নিচের মত –

['Name','Age','Salary']
['Ashik','24','20000']
['Sumon','28','22000']
['Mamun','34','40000']

প্রোগ্রামটি ব্যাখ্যা করা যাক। Import সেকশনে আমরা csv লাইব্রেরী Import করেছি। এরপর open() ফাংশনের মাধ্যমে salary.csv কে রিড মোডে csv_file নামের অবজেক্টে রুপান্তর করা হয়েছে। csv_file দ্বারা একটি রিডার অবজেক্ট তৈরি করেছি। reader() মেথডের দুটি প্যারামিটারের মধ্যে delimiter টি অপশনাল। তবে কমা ছাড়া অন্য delimiter এর ক্ষেত্রে ব্যবহার করাই উত্তম। এবার ফর লুপের দ্বারা ফাইলটির একটি করে লাইন পড়া ও প্রিন্ট করা হয়েছে যেগুলো একেকটি লিস্ট অবজেক্ট। চাইলে DictReader() এর মাদ্ধমেও রিড করা যায়।

কিভাবে রাইট করতে হয়?

ধরা যাক salary.csv ফাইলটিতে Ankar নামের একজন বাক্তি যুক্ত হবেন যার বয়স 21 এবং বেতন 18000। তাহলে ফাইলটিকে append মোডে ওপেন করতে হবে। তারপর writer অবজেক্ট তৈরি করে writerow() মেথডের মাধ্যমে রাইট করা যাবে। আবার writerows() এর মাধ্যমে একাধিক সারি যুক্ত করা যায়।

import csv 
with open('salary.csv', 'a', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(["Ankar", "21", "18000"])

সব শেষে

এই লেখাটি এই পর্যন্তই। আরও জানতে গুগলে সার্চ করুন। এই লেখাটি অবতরনা মাত্র। পাইথনে csv ফাইল নিয়ে কাজ করার জন্য বেশকটি লাইব্রেরী আছে। সেগুলো দেখতে পারেন।

[বিঃদ্রঃ এই লেখাটি আমি লিখেছিলাম যখন আমি দ্বাদশ শ্রেণির শিক্ষার্থী। লেখাটি অত্যন্ত অপাঠ্য। কিন্তু আবেগ থেকেই লেখাটির কোন পরিবর্তন করলাম না।]

Comments