Ejecuto un shell de Python desde crontab cada minuto:
* * * * * /home/udi/foo/bar.py
/home/udi/footiene algunos subdirectorios necesarios, como /home/udi/foo/logy /home/udi/foo/config, que se /home/udi/foo/bar.pyrefiere a.
El problema es que crontabejecuta el script desde un directorio de trabajo diferente, por lo que ./log/bar.logfalla 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!
crontabel caso de uso: ambossys.argv[0]y__file__fallan si el script se ejecuta usandoexecfile();inspectbasada en solución podría usarse en su lugar.