আমি প্রথমে কিছু বিভ্রান্তির সমাধান করতে চাই। __file__এটি ওয়াইল্ডকার্ড নয় এটি একটি বৈশিষ্ট্য। ডাবল আন্ডারস্কোর বৈশিষ্ট্য এবং পদ্ধতিগুলি কনভেনশন দ্বারা "বিশেষ" হিসাবে বিবেচিত হয় এবং একটি বিশেষ উদ্দেশ্যে পরিবেশন করে।
http://docs.python.org/references/datamodel.html এগুলিতে না থাকলেও অনেকগুলি বিশেষ পদ্ধতি এবং বৈশিষ্ট্য দেখায়।
এই ক্ষেত্রে __file__একটি মডিউল (একটি মডিউল অবজেক্ট) এর একটি বৈশিষ্ট্য। পাইথনে একটি .pyফাইল একটি মডিউল। সুতরাং import amoduleএকটি বৈশিষ্ট্য থাকবে __file__যার অর্থ ভিন্ন ভিন্ন পরিস্থিতিতে বিভিন্ন জিনিস।
ডক্স থেকে নেওয়া:
__file__মডিউলটি লোড করা হয়েছিল এমন ফাইলের পাথের নাম, যদি এটি কোনও ফাইল থেকে লোড করা হয়। __file__অ্যাট্রিবিউট সি মডিউল যা স্ট্যাটিক্যালি ব্যাখ্যাকারী মধ্যে সংযুক্ত থাকে উপস্থিত নয়; একটি ভাগ করা লাইব্রেরি থেকে গতিশীল লোড এক্সটেনশন মডিউলগুলির জন্য, এটি ভাগ করা লাইব্রেরি ফাইলের পথের নাম।
আপনার ক্ষেত্রে মডিউলটি __file__বিশ্বব্যাপী নেমস্পেসে এটির নিজস্ব বৈশিষ্ট্য অ্যাক্সেস করছে ।
এটিকে ক্রিয়াতে দেখার চেষ্টা করুন:
# file: test.py
print globals()
print __file__
এবং চালান:
python test.py
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__file__':
'test_print__file__.py', '__doc__': None, '__package__': None}
test_print__file__.py
__file__সমস্ত ক্ষেত্রে যেমন সংজ্ঞায়িত করা হয় না, যেমন স্থিরভাবে সংযুক্ত সি মডিউলগুলি। আমরা__file__সর্বদা উপলব্ধ থাকার উপর নির্ভর করতে পারি না ।