Je lance un shell python depuis la crontab toutes les minutes :
* * * * * /home/udi/foo/bar.py
/home/udi/foo
a quelques sous-répertoires nécessaires, comme /home/udi/foo/log
y /home/udi/foo/config
qui /home/udi/foo/bar.py
se réfère à.
Le problème est que crontab
exécute le script à partir d'un répertoire de travail différent, donc essayer d'ouvrir ./log/bar.log
échoue.
Existe-t-il un moyen agréable d'indiquer au script de changer le répertoire de travail pour le propre répertoire du script ? J'aurais envie d'une solution qui fonctionnerait pour n'importe quel emplacement du script, plutôt que de dire explicitement au script où il se trouve.
EDIT :
os.chdir(os.path.dirname(sys.argv[0]))
C'était la solution la plus compacte et la plus élégante. Merci pour vos réponses et explications !
0 votes
Sans rapport avec
crontab
cas d'utilisation : les deuxsys.argv[0]
y__file__
échoue si script est exécuté en utilisantexecfile()
;inspect
-solution basée sur la technologie pourrait être utilisé à la place.