Eu corro um shell python do crontab a cada minuto:
* * * * * /home/udi/foo/bar.py
/home/udi/foo
possui alguns subdiretórios necessários, como /home/udi/foo/log
e /home/udi/foo/config
, ao qual /home/udi/foo/bar.py
se refere.
O problema é que crontab
o script é executado a partir de um diretório de trabalho diferente, portanto, a tentativa de abrir ./log/bar.log
falha.
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!
crontab
caso de uso: bothsys.argv[0]
e__file__
fail se o script for executado usandoexecfile()
;inspect
solução baseada em dados poderia ser usada.