Eu corro um shell python do crontab a cada minuto:
* * * * * /home/udi/foo/bar.py
/home/udi/foopossui alguns subdiretórios necessários, como /home/udi/foo/loge /home/udi/foo/config, ao qual /home/udi/foo/bar.pyse refere.
O problema é que crontabo script é executado a partir de um diretório de trabalho diferente, portanto, a tentativa de abrir ./log/bar.logfalha.
Existe uma boa maneira de dizer ao script para alterar o diretório de trabalho para o próprio diretório do script? Gostaria de uma solução que funcionasse para qualquer local de script, em vez de dizer explicitamente onde está o script.
EDITAR:
os.chdir(os.path.dirname(sys.argv[0]))
Foi a solução elegante mais compacta. Obrigado por suas respostas e explicações!
crontabcaso de uso: bothsys.argv[0]e__file__fail se o script for executado usandoexecfile();inspectsolução baseada em dados poderia ser usada.