Я щохвилини запускаю оболонку пітона з 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
розчин на основі .