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