আমি প্রতি মিনিটে ক্রন্টব থেকে পাইথন শেলটি চালাই:
* * * * * /home/udi/foo/bar.py
/home/udi/foo
কিছু প্রয়োজনীয় উপ-ডিরেক্টরি আছে, যেমন /home/udi/foo/log
এবং /home/udi/foo/config
, যা /home/udi/foo/bar.py
বোঝায়।
সমস্যাটি হ'ল crontab
স্ক্রিপ্টটি একটি ভিন্ন ওয়ার্কিং ডিরেক্টরি থেকে চালিত হয়, তাই খোলার চেষ্টা ./log/bar.log
ব্যর্থ হয়।
স্ক্রিপ্টকে স্ক্রিপ্টটির নিজস্ব ডিরেক্টরিতে ওয়ার্কিং ডিরেক্টরিটি পরিবর্তন করতে বলার কোনও দুর্দান্ত উপায় আছে? আমি কোনও সমাধান কল্পনা করবো যা কোনও স্ক্রিপ্টের অবস্থানের জন্য কাজ করবে, স্ক্রিপ্টটি যেখানে রয়েছে তা স্পষ্ট করে বলার অপেক্ষা রাখে না।
সম্পাদনা করুন:
os.chdir(os.path.dirname(sys.argv[0]))
সবচেয়ে কমপ্যাক্ট মার্জিত সমাধান ছিল। আপনার উত্তর এবং ব্যাখ্যা জন্য ধন্যবাদ!
crontab
ব্যবহারের ক্ষেত্রে সম্পর্কিত নয় : উভয়ইsys.argv[0]
এবং__file__
যদি স্ক্রিপ্ট ব্যবহার করে চালানো হয় তবে ব্যর্থ হয়execfile()
;inspect
এর ভিত্তিতে সমাধানটি ব্যবহার করা যেতে পারে।