Je lance un shell python depuis crontab toutes les minutes:
* * * * * /home/udi/foo/bar.py
/home/udi/fooa quelques sous-répertoires nécessaires, comme /home/udi/foo/loget /home/udi/foo/config, qui /home/udi/foo/bar.pyfait référence à.
Le problème est que crontable script exécute à partir d'un répertoire de travail différent, donc essayer d'ouvrir ./log/bar.logéchoue.
Existe-t-il une bonne façon de dire au script de changer le répertoire de travail vers le propre répertoire du script? J'aurais envie d'une solution qui fonctionnerait pour n'importe quel emplacement de script, plutôt que d'indiquer explicitement au script où il se trouve.
ÉDITER:
os.chdir(os.path.dirname(sys.argv[0]))
C'était la solution élégante la plus compacte. Merci pour vos réponses et explications!
crontabcas d' utilisation: les deuxsys.argv[0]et__file__échouent si le script est exécuté en utilisantexecfile();inspectune solution à base de données pourrait être utilisée à la place.