মূল content-এ যাও

Python for AI/Errors ও Files/Lesson 29

File Handling

Disk-এ data লেখা আর পড়া — open(), mode (r, w, a), লাইন ধরে পড়া, বাংলার জন্য encoding="utf-8", আর pathlib দিয়ে path সামলানো।

সময়
22 মিনিট
Exercise
1
Challenge
1
Quiz
3 প্রশ্ন

সহজ ভাষায়

Variable-এর data থাকে memory-তে — program শেষ হলেই হারিয়ে যায়। Data স্থায়ীভাবে রাখতে হলে file-এ লিখতে হয়।

main.py
  • open(path, mode) — file খোলে
  • with ... as f: — block শেষে file নিজে থেকে বন্ধ করে
  • f.write() লেখে, f.read() পড়ে

এই playground-এর প্রতিটা run একটা নতুন folder-এ চলে, যেখানে আগের run-এর কোনো file থাকে না (শুধু platform-এর built-in dataset, যেমন students.csv)। তাই প্রতিটা উদাহরণ আগে নিজের file বানিয়ে নেয়।

কেন দরকার?

  • Dataset — প্রায় সব data আসে file থেকে: CSV, JSON, text, ছবি।
  • Model save/load — ঘণ্টার পর ঘণ্টা train করা model file-এ save না করলে আবার train করতে হবে।
  • Log — training চলাকালে কী হচ্ছে তা file-এ লিখে রাখা।

Mode

ModeমানেFile না থাকলেআগের লেখা
"r"পড়া (default)FileNotFoundErrorথাকে
"w"লেখানতুন বানায়মুছে যায়
"a"শেষে যোগ (append)নতুন বানায়থাকে
"rb" / "wb"binary (ছবি, model)——
main.py

পড়ার তিন উপায়

main.py
উপায়কখন
f.read()ছোট file, পুরোটা একবারে
f.read().splitlines()লাইনের list চাই, \n ছাড়া
for line in f:বড় file — একবারে একটা লাইন memory-তে, ১০ GB file-ও পড়া যায়

Encoding: বাংলার জন্য জরুরি

Computer অক্ষর রাখে সংখ্যা হিসেবে। কোন অক্ষর কোন সংখ্যা — সেই নিয়মকে বলে encoding। বাংলা সহ পৃথিবীর সব ভাষার জন্য standard হলো UTF-8।

main.py

৫টা অক্ষর, কিন্তু ১৫ byte — প্রতিটা বাংলা অক্ষর UTF-8-এ ৩ byte।

encoding="utf-8" না দিলে Python operating system-এর default ব্যবহার করে। Windows-এ সেটা প্রায়ই UTF-8 না — বাংলা file পড়তে গেলে UnicodeDecodeError বা ভাঙা অক্ষর। সবসময় লিখে দাও।

pathlib: path নিয়ে কাজ

"data/" + name + ".txt" জোড়া লাগানোর বদলে আধুনিক উপায় — pathlib:

main.py

/ দিয়ে path জোড়া লাগে — Windows (\) আর Linux (/) দুটোতেই ঠিকঠাক কাজ করে।

File না থাকলে

main.py

Exercise

Exercise

File-এর শব্দ গোনা

+20 XP

count_words(path) function লেখো যেটা একটা text file খুলে তার মোট শব্দ সংখ্যা return করে।

File-এ বাংলা থাকতে পারে, তাই encoding="utf-8" দিয়ে খোলো।

solution.py

Quiz

  1. Q1open("data.txt", "w") — file-এ আগে থেকে লেখা থাকলে কী হয়?
  2. Q2বাংলা text file পড়ার সময় encoding="utf-8" কেন দেওয়া উচিত?
  3. Q3with open(...) as f: ব্যবহারের প্রধান সুবিধা কী?
0/3 answered

Challenge

Challenge

Log file-এর শেষ লাইনগুলো

+50 XP

দুটো function লেখো:

  • log(path, message) — file-এর শেষে একটা নতুন লাইন যোগ করবে (আগের লাইন মুছবে না)। File না থাকলে বানাবে।
  • tail(path, n) — file-এর শেষ `n`টা লাইন list হিসেবে return করবে, লাইনের শেষের \n ছাড়া। File না থাকলে খালি list।
solution.py

বাস্তবে কোথায় ব্যবহার হয়?

একটা text classification dataset প্রায়ই এভাবে সাজানো থাকে — প্রতিটা class-এর জন্য একটা folder, ভেতরে প্রতিটা sample একটা file। চলো এমন একটা বানিয়ে পড়ি:

main.py

PyTorch-এর ImageFolder আর Hugging Face-এর অনেক dataset loader ঠিক এই "folder নাম = label" নিয়মে কাজ করে।

Interview প্রশ্ন

  • Beginner: "w" আর "a" mode-এর পার্থক্য কী?
  • Intermediate: ১০ GB-র একটা log file কীভাবে পড়বে যাতে memory শেষ না হয়?
  • Advanced: Text mode আর binary mode-এর পার্থক্য কী? Model weights কেন binary-তে save হয়?

এরপর কী?

Plain text-এ list বা dictionary রাখা ঝামেলার — আবার পড়ার সময় parse করতে হয়। এর standard সমাধান: পরের lesson JSON।