我从crontab每一分钟运行一个Python shell:
* * * * * /home/udi/foo/bar.py
/home/udi/foo
目录下有一些必要的子目录,例如 /home/udi/foo/log
和 /home/udi/foo/config
,/home/udi/foo/bar.py
脚本引用了这些子目录。
问题在于 crontab
从不同的工作目录运行脚本,因此尝试打开 ./log/bar.log
失败了。
有没有一个简单的方法告诉脚本将工作目录更改为自己所在的目录?我希望这个解决方案适用于任何脚本位置,而不是显式地告诉脚本其位置。
编辑:
os.chdir(os.path.dirname(sys.argv[0]))
这是最简洁优雅的解决方案。感谢您的答案和解释!
crontab
用例无关:如果使用execfile()
运行脚本,则sys.argv[0]
和__file__
都会失败;可以使用基于inspect
的解决方案。 - jfs