আমি দেখতে চাই পাইথনের বর্তমান স্ক্রিপ্ট ডিরেক্টরিটি নির্ধারণের সেরা উপায় কোনটি?
আমি আবিষ্কার করেছি যে অজগর কোড কল করার বিভিন্ন উপায়ের কারণে, ভাল সমাধান খুঁজে পাওয়া শক্ত।
এখানে কিছু সমস্যা রয়েছে:
__file__
স্ক্রিপ্টটি দিয়ে সম্পাদিত হলে সংজ্ঞায়িত হয় নাexec
,execfile
__module__
শুধুমাত্র মডিউলগুলিতে সংজ্ঞায়িত করা হয়
ব্যবহারের ক্ষেত্রে:
./myfile.py
python myfile.py
./somedir/myfile.py
python somedir/myfile.py
execfile('myfile.py')
(অন্য স্ক্রিপ্ট থেকে, এটি অন্য ডিরেক্টরিতে অবস্থিত হতে পারে এবং এতে আরও একটি বর্তমান ডিরেক্টরি থাকতে পারে।
আমি জানি যে এর কোনও নিখুঁত সমাধান নেই, তবে আমি সেরা পদ্ধতির সন্ধান করছি যা বেশিরভাগ ক্ষেত্রে সমাধান করে।
সর্বাধিক ব্যবহৃত পদ্ধতির os.path.dirname(os.path.abspath(__file__))
তবে আপনি যদি অন্য কোনওর সাথে স্ক্রিপ্টটি সম্পাদন করেন তবে এটি সত্যিই কাজ করে না exec()
।
সতর্কতা
যে ডিরেক্টরিটি বর্তমান ডিরেক্টরি ব্যবহার করে তা ব্যর্থ হবে, স্ক্রিপ্টটি যেভাবে বলা হয় তার উপর ভিত্তি করে এটি চলমান স্ক্রিপ্টের অভ্যন্তরে পরিবর্তিত হতে পারে different
pathlib
অজগর ৩.৪ বা তার বেশি ব্যবহার করলে রন কালিয়ান এর সমাধানটি দেখুন : stackoverflow.com/a/48931294/1011724
python myfile.py
শেল থেকে কাজ করার সময় এটি কাজ করে, তবে ভিএম এর মধ্যে :!python %
এবং উভয়ই ব্যর্থ হয় সিস্টেমটি নির্দিষ্ট পথটি খুঁজে পায় না। এটি বেশ বিরক্তিকর। এই এবং সম্ভাব্য কর্মক্ষেত্রের পিছনে কারণ সম্পর্কে কেউ মন্তব্য করতে পারেন? :!python myfile.py