Eseguo una shell Python da crontab ogni minuto:
* * * * * /home/udi/foo/bar.py
/home/udi/fooha alcune sottodirectory necessarie, come /home/udi/foo/loge /home/udi/foo/config, a cui /home/udi/foo/bar.pyfa riferimento.
Il problema è che crontabesegue lo script da una directory di lavoro diversa, quindi il tentativo di apertura ha ./log/bar.logesito negativo.
C'è un bel modo per dire allo script di cambiare la directory di lavoro nella propria directory dello script? Vorrei una soluzione che funzionasse per qualsiasi posizione dello script, piuttosto che dire esplicitamente allo script dove si trova.
MODIFICARE:
os.chdir(os.path.dirname(sys.argv[0]))
Era la soluzione elegante più compatta. Grazie per le tue risposte e spiegazioni!
crontabcaso d'uso: entrambisys.argv[0]e__file__falliscono se lo script viene eseguito usandoexecfile();inspectal suo posto potrebbe essere utilizzata una soluzione basata su .