मैं हर मिनट में क्रेस्टब से एक अजगर खोल चलाता हूं:
* * * * * /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
समाधान का उपयोग किया जा सकता है।