Ejecuto un shell de Python desde crontab cada minuto:
* * * * * /home/udi/foo/bar.py
/home/udi/foo
tiene algunos subdirectorios necesarios, como /home/udi/foo/log
y /home/udi/foo/config
, que se /home/udi/foo/bar.py
refiere a.
El problema es que crontab
ejecuta el script desde un directorio de trabajo diferente, por lo que ./log/bar.log
falla al intentar abrirlo .
¿Hay una buena manera de decirle al script que cambie el directorio de trabajo al propio directorio del script? Me gustaría una solución que funcione para cualquier ubicación de script, en lugar de decirle explícitamente dónde está.
EDITAR:
os.chdir(os.path.dirname(sys.argv[0]))
Fue la solución elegante más compacta. Gracias por sus respuestas y explicaciones!
crontab
el caso de uso: ambossys.argv[0]
y__file__
fallan si el script se ejecuta usandoexecfile()
;inspect
basada en solución podría usarse en su lugar.