Я запускаю оболочку Python из 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решение может быть использовано вместо.