के लिए निर्देशिका स्क्रिप्ट काम कर रही बदले मैं crontab से हर मिनट एक अजगर खोल चलाएँ:अजगर: स्क्रिप्ट के अपने निर्देशिका
* * * * * /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() 'का उपयोग करके स्क्रिप्ट चलाए जाने पर असफल हो जाते हैं; ['निरीक्षण 'आधारित समाधान] (http://stackoverflow.com/a/22881871/4279) इसके बजाय इस्तेमाल किया जा सकता है। – jfs