ফাইল কখন বন্ধ হবে?
যেহেতু আমরা শিখতে পারি স্পষ্টভাবে ফাইলগুলি বন্ধ করা কি গুরুত্বপূর্ণ? (স্ট্যাকওভারফ্লো) , পাইথন ইন্টারপ্রেটার নিম্নলিখিত ক্ষেত্রে ফাইলটি বন্ধ করে দেয়:
- আপনি কোনও ব্লক রেখে ম্যানুয়ালি
close()
কোনও file
অবজেক্টের পদ্ধতিটিকে স্পষ্টভাবে বা স্পষ্টভাবে অনুরোধ করছেন with open(...):
। এটি অবশ্যই সর্বদা এবং যেকোন পাইথন বাস্তবায়নে কাজ করে।
file
অবজেক্ট এর শেষ রেফারেন্স মুছে গিয়েছে এবং সেইজন্য বস্তুর গার্বেজ কালেকটর দ্বারা প্রক্রিয়াকৃত হয়। এটি কোনও ভাষা বৈশিষ্ট্য নয়, তবে কেবল সিপিথন বাস্তবায়নের একটি বিশেষ বৈশিষ্ট্য, সুতরাং বহনযোগ্যতার জন্য এটির উপর নির্ভর করবেন না!
- পাইথন দোভাষী শেষ করে। এই ক্ষেত্রে এটি খোলার সাথে সাথে সমস্ত ফাইল হ্যান্ডলগুলি বন্ধ করে দেওয়া উচিত । পাইথন 3 এর কিছু পুরানো সংস্করণে একটি সতর্কতাও ছাপা হত যে আপনার নিজের হাতে নিজেই এটি বন্ধ করা উচিত ছিল। তবে কোনও ক্র্যাশ কল্পনা করুন বা আপনি পাইথন দোভাষীকে জোর করে হত্যা করছেন এবং আপনি দেখতে পাবেন যে এটিও নির্ভরযোগ্য নয়।
সুতরাং শুধুমাত্র প্রথম (ম্যানুয়াল) পদ্ধতি নির্ভরযোগ্য!
কোনও ফাইল খোলা থাকলে কী হবে?
প্রথমে, আপনার পাইথন ইন্টারপ্রেটার বাস্তবায়নের উপর নির্ভর করে আপনি যদি লেখার অ্যাক্সেস সহ কোনও ফাইল খোলেন তবে আপনি নিশ্চিত হতে পারবেন না যে আপনি নিজে নিজেই তা প্ররোচিত না করেন বা ফাইল হ্যান্ডলারটি বন্ধ না হওয়া পর্যন্ত আপনার পরিবর্তনগুলি ডিস্কে ফ্লাশ হয়ে গেছে।
দ্বিতীয়ত, আপনি কেবলমাত্র ব্যবহারকারী হিসাবে আপনার সিস্টেমে সীমিত সংখ্যক ফাইল খুলতে পারেন। যদি আপনি এই সীমাটি অতিক্রম করেন যেমন উদাহরণস্বরূপ আপনার পাইথন প্রোগ্রামে একটি লুপে অনেকগুলি ফাইল যত তাড়াতাড়ি বন্ধ না করে খোলেন, সিস্টেমটি আপনার জন্য আরও ফাইল হ্যান্ডলগুলি খুলতে অস্বীকার করতে পারে এবং আপনি একটি ব্যতিক্রম পাবেন। এটিও ঘটতে পারে যে আপনার প্রোগ্রামটি সর্বশেষ অনুমোদিত অনুমোদিত ওপেন ফাইল নেয় এবং অন্য প্রোগ্রাম ব্যর্থ হবে কারণ এটি হ্রাস পেয়েছে।
তৃতীয়ত, অপসারণযোগ্য ডিভাইসে ফাইলগুলি খোলার ফলে তা আনমাউন্ট বা বেরিয়ে যাওয়া থেকে বিরত থাকে। আপনি এখনও কিছু ফাইল সিস্টেমে ফাইলটি মুছে ফেলতে পারেন ext4
, যেখানে কেবল ফাইলের আইকনডিতে ফাইল বর্ণনাকারী / হার্ড লিঙ্কটি মুছে ফেলা / লিঙ্কহীন হয়ে যায় তবে ফাইলটি খোলা প্রোগ্রামটি এখনও তার নিজের অস্থায়ী ফাইল হ্যান্ডলারের মাধ্যমে ইনোড অ্যাক্সেস করতে পারে। এটি উদাহরণস্বরূপ এমন একটি প্রক্রিয়াও যা সম্পর্কিত সফ্টওয়্যার চলাকালীন আপনাকে প্যাকেজ আপডেট করার অনুমতি দেয়। তবে, যেমন এনটিএফএসের তেমন কোনও বৈশিষ্ট্য নেই। এটি দুটি সমবর্তী প্রক্রিয়া দ্বারা কখনও সংশোধিত নাও হতে পারে, তাই এটি এখনও অন্যরকমের জন্য কোনওভাবে অবরুদ্ধ থাকবে।
with open (file_name, ...) as variable:
close()
আপনি এই কোডটি ব্লকটি ছাড়ার সাথে সাথেই স্বয়ংক্রিয়ভাবে পদ্ধতিটি শুরু করে।