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