ho eseguire una shell Python da crontab ogni minuto:pitone: Modificare gli script directory di lavoro alla propria directory dello script
* * * * * /home/udi/foo/bar.py
/home/udi/foo
ha alcuni sottodirectory necessarie, come /home/udi/foo/log
e /home/udi/foo/config
, che si riferisce a /home/udi/foo/bar.py
.
Il problema è che crontab
esegue lo script da una diversa directory di lavoro, pertanto non è possibile provare a aprire ./log/bar.log
.
C'è un modo carino per dire allo script di cambiare la directory di lavoro nella directory dello script? Mi piacerebbe una soluzione che possa funzionare per qualsiasi posizione di script, piuttosto che dire esplicitamente allo script dove si trova.
EDIT:
os.chdir(os.path.dirname(sys.argv[0]))
era la soluzione più compatta elegante. Grazie per le vostre risposte e spiegazioni!
non correlato al caso d'uso 'crontab': entrambi' sys.argv [0] 'e' __file__' falliscono se lo script viene eseguito usando 'execfile()'; [Si potrebbe usare invece la soluzione '' inspect'-based] (http://stackoverflow.com/a/22881871/4279). – jfs