ฉันใช้ 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
สามารถใช้โซลูชันพื้นฐาน