Python open() দিয়ে ফাইল পড়ে আর লেখে — PHP-এর fopen()/file_get_contents() পরিবারের সমতুল্য, একটি ফাংশনে একত্রিত।
Python-এ একটি ফাইল নিয়ে কাজ করার idiomatic উপায় হলো with স্টেটমেন্ট, যা ব্লক শেষ হলে স্বয়ংক্রিয়ভাবে ফাইলটি বন্ধ করে দেয় — এমনকি মাঝপথে একটি এরর হলেও, PHP-এর ম্যানুয়াল fclose()-এর থেকে আলাদা:
with open("notes.txt", "r") as file:
content = file.read()
print(content)
# the file is automatically closed here, guaranteedম্যানুয়াল close()-এর বদলে সবসময় with প্রাধান্য দিন
with একটি context manager — "কিছু একটা সেট আপ করা, পরে সেটা পরিষ্কার হওয়া নিশ্চিত করা"-র জন্য একটি সাধারণ Python প্যাটার্ন, শুধু ফাইলের চেয়ে অনেক বেশি ব্যবহৃত (ডেটাবেস কানেকশন আর নেটওয়ার্ক সকেটও একই প্যাটার্ন মেনে চলে)। নিজে ম্যানুয়ালি .close() কল করার বদলে এটি প্রাধান্য দিন।
with open("notes.txt", "w") as file:
file.write("Hello, file!") # "w" overwrites
with open("notes.txt", "a") as file:
file.write("\nAnother line.") # "a" appends insteadএকটি বড় ফাইলের জন্য, সরাসরি ফাইল অবজেক্টের উপর লুপ করলে একবারে সবকিছু মেমরিতে লোড না করে একবারে একটি লাইন পড়া যায়:
with open("notes.txt", "r") as file:
for line in file:
print(line.strip()) # .strip() removes the trailing newline| মোড | অর্থ |
|---|---|
| "r" | পড়া (ডিফল্ট) — ফাইলটি আগে থেকেই থাকতে হবে |
| "w" | লেখা — না থাকলে ফাইল তৈরি করে, থাকলে ওভাররাইট করে |
| "a" | যোগ করা — না থাকলে ফাইল তৈরি করে, থাকলে শেষে যোগ করে |
user-সরবরাহকৃত ফাইল path কখনো বিশ্বাস করবেন না
PHP-এর মতোই, এই ফাংশনগুলোর সাথে ব্যবহৃত যেকোনো ফাইল path কখনো সতর্ক ভ্যালিডেশন ছাড়া সরাসরি user input থেকে আসা উচিত নয় — একটি user-নিয়ন্ত্রিত path একটি বাস্তব সিকিউরিটি ঝুঁকি। ফাইল আপলোড জড়িত হলে এটি আরও বেশি গুরুত্বপূর্ণ।