【发布时间】:2010-11-28 19:25:20
【问题描述】:
我每分钟从 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-based solution。