python: cambia la directory di lavoro degli script nella directory dello script

| | | | |

Eseguo una shell python da crontab ogni minuto:

* * * * * /home/udi/foo/bar.py 

/home/udi/foo ha alcune sottodirectory necessarie, come /home/udi/foo/log e /home/udi/foo/config, a cui fa riferimento /home/udi/foo/bar.py.

Il problema è che crontab esegue lo script da una directory di lavoro diversa, quindi il tentativo di aprire ./log/bar.log non riesce.

C'è un modo carino per dire allo script di cambiare la directory di lavoro nella directory dello script? immagina una soluzione che funzioni 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 ed elegante. Grazie per le tue risposte e spiegazioni!