ฉันใช้ python shell จาก 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();inspectสามารถใช้โซลูชันพื้นฐาน