- File Handling কী এবং কেন দরকার?
- File খোলার Mode — r, w, a, x, rb, wb
- File লেখা — write() ও writelines()
- File পড়া — read(), readline(), readlines()
- with Statement — নিরাপদ File Handling
- File-এ Append করা
- CSV File পড়া ও লেখা
- os Module — File ও Directory পরিচালনা
- File Existence চেক ও Error Handling
- প্র্যাকটিক্যাল প্রজেক্ট — Diary App
- সারাংশ ও অনুশীলন
এতদিন আমাদের প্রোগ্রাম বন্ধ হলে সব ডেটা হারিয়ে যেত। কিন্তু বাস্তব জীবনে ডেটা সংরক্ষণ করতে হয় — যেমন ব্যবহারকারীর তথ্য, লগ ফাইল, সেটিংস। এই কাজের জন্যই Python-এ আছে File Handling।
File Handling হলো Python দিয়ে Computer-এর File তৈরি করা, পড়া, লেখা এবং মুছে ফেলার পদ্ধতি। প্রোগ্রাম বন্ধ হলেও File-এর ডেটা টিকে থাকে।
| কাজ | উদাহরণ |
|---|---|
| ডেটা সংরক্ষণ | User-এর প্রোফাইল, গেমের Score সেভ করা |
| Log তৈরি | কখন কে Login করেছে রেকর্ড রাখা |
| Configuration | App-এর Settings .txt বা .cfg ফাইলে |
| Data Processing | CSV থেকে ডেটা পড়ে বিশ্লেষণ করা |
| Report তৈরি | হিসাব-নিকাশের রিপোর্ট File-এ লেখা |
Python-এ File Handle করার সাধারণ ধাপ:
১. File খোলো → ২. কাজ করো (পড়ো বা লেখো) → ৩. File বন্ধ করো। সবচেয়ে নিরাপদ পদ্ধতি হলো with statement — এটি স্বয়ংক্রিয়ভাবে File বন্ধ করে দেয়।
open(filename, mode) ফাংশন দিয়ে File খোলা হয়। Mode নির্ধারণ করে File-এর সাথে কী করা যাবে।
(default)
না থাকলে Error
নতুন তৈরি বা
পুরনোটা মুছে
শেষে যোগ করে
পুরনো রাখে
আগে থাকলে
Error
image/pdf
এর জন্য
image/pdf
এর জন্য
উভয়
File থাকতে হবে
পুরনোটা
মুছে
"w" mode সাবধান! "w" mode দিয়ে File খুললে আগের সব তথ্য মুছে যায়। পুরনো তথ্য রেখে নতুন যোগ করতে "a" mode ব্যবহার করো।
# পদ্ধতি ১: সরাসরি open/close f = open("students.txt", "w", encoding="utf-8") f.write("রাহিম করিম 85\n") f.write("সালমা আক্তার 91\n") f.write("করিম উদ্দিন 72\n") f.close() # অবশ্যই বন্ধ করতে হবে! print("✅ students.txt লেখা হয়েছে।") # writelines() — List থেকে একসাথে লেখা lines = [ "নাম: রাহিম\n", "বয়স: 22\n", "শহর: ঢাকা\n", ] f2 = open("profile.txt", "w", encoding="utf-8") f2.writelines(lines) f2.close() print("✅ profile.txt লেখা হয়েছে।")
✅ students.txt লেখা হয়েছে। ✅ profile.txt লেখা হয়েছে।
File-এর ভেতরে এখন এই তথ্য আছে:
বাংলা বা অন্য Unicode text লিখতে encoding="utf-8" ব্যবহার করো। এটি না দিলে বাংলা text সঠিকভাবে সংরক্ষিত হবে না।
# পদ্ধতি ১: read() — সম্পূর্ণ File একবারে f = open("students.txt", "r", encoding="utf-8") content = f.read() f.close() print("=== read() ===") print(content) # পদ্ধতি ২: readline() — এক লাইন করে f = open("students.txt", "r", encoding="utf-8") print("=== readline() ===") print(f.readline(), end="") # ১ম লাইন print(f.readline(), end="") # ২য় লাইন f.close() # পদ্ধতি ৩: readlines() — List হিসেবে f = open("students.txt", "r", encoding="utf-8") all_lines = f.readlines() f.close() print("=== readlines() ===") print(all_lines) print(f"মোট লাইন: {len(all_lines)}") # Loop দিয়ে পড়া — সবচেয়ে ভালো পদ্ধতি f = open("students.txt", "r", encoding="utf-8") print("=== Loop দিয়ে ===") for i, line in enumerate(f, 1): print(f"{i}. {line.strip()}") f.close()
=== read() === রাহিম করিম 85 সালমা আক্তার 91 করিম উদ্দিন 72 === readline() === রাহিম করিম 85 সালমা আক্তার 91 === readlines() === ['রাহিম করিম 85\n', 'সালমা আক্তার 91\n', 'করিম উদ্দিন 72\n'] মোট লাইন: 3 === Loop দিয়ে === 1. রাহিম করিম 85 2. সালমা আক্তার 91 3. করিম উদ্দিন 72
| Method | ফেরত দেয় | কখন ব্যবহার |
|---|---|---|
| read() | একটি String | ছোট File সম্পূর্ণ পড়তে |
| readline() | একটি String (এক লাইন) | এক লাইন করে পড়তে |
| readlines() | List of Strings | সব লাইন List-এ নিতে |
| Loop দিয়ে | এক লাইন করে | বড় File-এর জন্য সেরা |
with statement ব্যবহার করলে File-এর কাজ শেষ হলে Python স্বয়ংক্রিয়ভাবে File বন্ধ করে দেয় — এমনকি Error হলেও।
# with দিয়ে লেখা — f.close() লাগবে না with open("notes.txt", "w", encoding="utf-8") as f: f.write("Python শেখা শুরু করলাম।\n") f.write("আজ File Handling শিখলাম।\n") # এখানে এসে File স্বয়ংক্রিয় বন্ধ print("✅ লেখা শেষ।") # with দিয়ে পড়া with open("notes.txt", "r", encoding="utf-8") as f: content = f.read() print(content) # একসাথে দুটি File খোলা with open("source.txt", "r", encoding="utf-8") as src, \ open("dest.txt", "w", encoding="utf-8") as dst: data = src.read() dst.write(data) print("✅ File কপি হয়েছে।")
✅ লেখা শেষ। Python শেখা শুরু করলাম। আজ File Handling শিখলাম। ✅ File কপি হয়েছে।
সবসময় with statement ব্যবহার করো। এটি automatically File close করে, Memory leak ও Resource এর সমস্যা এড়ায়।
"a" mode দিয়ে খুললে পুরনো ডেটা না মুছে শেষে নতুন ডেটা যোগ হয়।
# প্রথমে File তৈরি with open("log.txt", "w", encoding="utf-8") as f: f.write("=== Log File ===\n") # Append করা — পুরনোটা থাকে with open("log.txt", "a", encoding="utf-8") as f: f.write("2026-05-17: রাহিম Login করেছে\n") with open("log.txt", "a", encoding="utf-8") as f: f.write("2026-05-17: সালমা নতুন পোস্ট করেছে\n") # ফলাফল দেখা with open("log.txt", "r", encoding="utf-8") as f: print(f.read())
=== Log File === 2026-05-17: রাহিম Login করেছে 2026-05-17: সালমা নতুন পোস্ট করেছে
CSV (Comma-Separated Values) হলো সবচেয়ে সহজ ডেটা ফরম্যাট। Excel, Database — সব জায়গায় ব্যবহার হয়। Python-এর csv Module দিয়ে সহজেই কাজ করা যায়।
import csv # CSV লেখা students = [ ["নাম", "বয়স", "নম্বর"], # Header ["রাহিম", 22, 85], ["সালমা", 21, 91], ["করিম", 23, 72], ["নাসরিন", 20, 88], ] with open("students.csv", "w", newline="", encoding="utf-8-sig") as f: writer = csv.writer(f) writer.writerows(students) print("✅ students.csv তৈরি হয়েছে।")
import csv # CSV পড়া — সাধারণ পদ্ধতি with open("students.csv", "r", encoding="utf-8-sig") as f: reader = csv.reader(f) for row in reader: print(row) print() # DictReader — Header দিয়ে Access করা যায় with open("students.csv", "r", encoding="utf-8-sig") as f: reader = csv.DictReader(f) print(f"{'নাম':12} {'বয়স':6} {'নম্বর'}") print("─" * 25) for row in reader: print(f"{row['নাম']:12} {row['বয়স']:6} {row['নম্বর']}")
['নাম', 'বয়স', 'নম্বর'] ['রাহিম', '22', '85'] ['সালমা', '21', '91'] ['করিম', '23', '72'] ['নাসরিন', '20', '88'] নাম বয়স নম্বর ───────────────────────── রাহিম 22 85 সালমা 21 91 করিম 23 72 নাসরিন 20 88
Python-এর os Module দিয়ে File ও Folder-এর উপর অনেক কাজ করা যায়।
import os # বর্তমান Directory print(f"বর্তমান Directory: {os.getcwd()}") # File আছে কিনা চেক print(f"notes.txt আছে? {os.path.exists('notes.txt')}") print(f"ফাইল? {os.path.isfile('notes.txt')}") print(f"ফোল্ডার? {os.path.isdir('notes.txt')}") # File-এর আকার (bytes) if os.path.exists("notes.txt"): size = os.path.getsize("notes.txt") print(f"File আকার: {size} bytes") # Directory তৈরি করা if not os.path.exists("my_folder"): os.mkdir("my_folder") print("✅ my_folder তৈরি হয়েছে।") # Directory-র সব File দেখা files = os.listdir(".") # "." মানে বর্তমান Directory txt_files = [f for f in files if f.endswith(".txt")] print(f"সব .txt File: {txt_files}") # File নামকরণ if os.path.exists("notes.txt"): os.rename("notes.txt", "my_notes.txt") print("✅ notes.txt → my_notes.txt")
File না থাকলে Python FileNotFoundError দেয়। এটি এড়াতে আগে File আছে কিনা চেক করো অথবা Exception Handle করো।
import os # পদ্ধতি ১: আগে চেক করো def safe_read(filename): if not os.path.exists(filename): return f"❌ '{filename}' পাওয়া যায়নি।" with open(filename, "r", encoding="utf-8") as f: return f.read() print(safe_read("students.txt")) print(safe_read("missing.txt")) # পদ্ধতি ২: try-except (পর্ব ১১-এ বিস্তারিত) def read_with_try(filename): try: with open(filename, "r", encoding="utf-8") as f: return f.read() except FileNotFoundError: return f"❌ File পাওয়া যায়নি: {filename}" except PermissionError: return f"❌ File পড়ার অনুমতি নেই: {filename}" except Exception as e: return f"❌ Error: {e}" print(read_with_try("students.txt")) print(read_with_try("missing.txt"))
রাহিম করিম 85 সালমা আক্তার 91 করিম উদ্দিন 72 ❌ 'missing.txt' পাওয়া যায়নি। রাহিম করিম 85 সালমা আক্তার 91 করিম উদ্দিন 72 ❌ File পাওয়া যায়নি: missing.txt
File Handling-এর সব ধারণা ব্যবহার করে একটি সম্পূর্ণ Diary App তৈরি করি। এন্ট্রি যোগ করো, পড়ো, এবং তারিখ দিয়ে খোঁজো।
প্রতিদিনের ডায়েরি এন্ট্রি File-এ সংরক্ষণ করবে। নতুন লেখা, সব পড়া এবং নির্দিষ্ট তারিখ খোঁজার সুবিধা।
import os from datetime import datetime DIARY_FILE = "diary.txt" def add_entry(text): """নতুন ডায়েরি এন্ট্রি যোগ করে।""" now = datetime.now().strftime("%Y-%m-%d %H:%M") entry = f"\n{'='*40}\n📅 {now}\n{'='*40}\n{text}\n" with open(DIARY_FILE, "a", encoding="utf-8") as f: f.write(entry) print(f"✅ এন্ট্রি যোগ হয়েছে ({now})") def read_all(): """সব এন্ট্রি দেখায়।""" if not os.path.exists(DIARY_FILE): print("📔 ডায়েরি এখনো খালি।") return with open(DIARY_FILE, "r", encoding="utf-8") as f: content = f.read() print("📔 সব ডায়েরি এন্ট্রি:") print(content if content.strip() else "(খালি)") def search_by_date(date_str): """তারিখ দিয়ে খোঁজে (যেমন: 2026-05-17)।""" if not os.path.exists(DIARY_FILE): print("📔 ডায়েরি এখনো খালি।") return with open(DIARY_FILE, "r", encoding="utf-8") as f: lines = f.readlines() found = False in_block= False print(f"\n🔍 '{date_str}' তারিখের এন্ট্রি:") for line in lines: if date_str in line: in_block = True found = True if in_block: print(line, end="") if line.strip() == "" and found: in_block = False if not found: print(f"❌ '{date_str}' তারিখে কোনো এন্ট্রি নেই।") def count_entries(): """মোট এন্ট্রি গণনা করে।""" if not os.path.exists(DIARY_FILE): return 0 with open(DIARY_FILE, "r", encoding="utf-8") as f: return f.read().count("📅") # ── ব্যবহার ── add_entry("আজ Python-এর File Handling শিখলাম। অনেক মজা লাগল!") add_entry("with statement ব্যবহার করলে File বন্ধ করতে ভুলতে হয় না।") add_entry("CSV File পড়া অনেক সহজ। Data Science-এ কাজে লাগবে।") print(f"\n📊 মোট এন্ট্রি: {count_entries()}") read_all()
✅ এন্ট্রি যোগ হয়েছে (2026-05-17 10:30) ✅ এন্ট্রি যোগ হয়েছে (2026-05-17 10:30) ✅ এন্ট্রি যোগ হয়েছে (2026-05-17 10:31) 📊 মোট এন্ট্রি: 3 📔 সব ডায়েরি এন্ট্রি: ======================================== 📅 2026-05-17 10:30 ======================================== আজ Python-এর File Handling শিখলাম। অনেক মজা লাগল! ======================================== 📅 2026-05-17 10:30 ======================================== with statement ব্যবহার করলে File বন্ধ করতে ভুলতে হয় না। ======================================== 📅 2026-05-17 10:31 ======================================== CSV File পড়া অনেক সহজ। Data Science-এ কাজে লাগবে।
- File Handling কী ও কেন দরকার
- File খোলার Mode — r, w, a, x, rb, wb
- write() ও writelines() — File-এ লেখা
- read(), readline(), readlines() — তিনটি পড়ার পদ্ধতি
- with statement — সর্বোত্তম ও নিরাপদ পদ্ধতি
- "a" mode দিয়ে Append করা
- csv Module — CSV File লেখা ও পড়া, DictReader
- encoding="utf-8" — বাংলা text সঠিকভাবে সংরক্ষণ
- os Module — getcwd, exists, mkdir, listdir, rename
- File Existence চেক ও Safe Reading
- datetime Module — তারিখ ও সময় নেওয়া
- Diary App প্রজেক্ট
- Word Counter: একটি .txt File পড়ো এবং মোট শব্দ, লাইন ও অক্ষর গণনা করো
- Student Manager: CSV File-এ ছাত্রদের তথ্য সংরক্ষণ করো — নতুন যোগ করো, সব দেখাও
- Log System: প্রতিটি action-এ সময়সহ log.txt-এ লিখে রাখো
- File Backup: একটি File-এর সব content পড়ে .bak extension দিয়ে backup তৈরি করো
- Config Reader: key=value format-এর .txt File পড়ে Dictionary-তে রূপান্তর করো
- Exception কী এবং কেন হয়?
- try, except, else, finally — সম্পূর্ণ কাঠামো
- বিভিন্ন ধরনের Exception — ValueError, TypeError, KeyError
- Custom Exception তৈরি করা
- বাস্তব প্রজেক্ট — Robust Calculator

0 Comments