使用crontab运行Python程序路径错误
我在Linux系统下有一个用Python写的脚本,它需要找出当前的工作目录。负责这个功能的代码部分是:
import os
cwd = os.getcwd()
print cwd
当我直接运行这个程序时,它能给我正确的结果:
/home/johny/LST/CT
但是当我通过crontab来运行它时,结果却是这个:
/home/johny
即使我把它放在更深的文件夹里,结果还是一样。有没有人知道这可能是什么问题呢?
2 个回答
5
在你的定时任务文件里,做以下操作:
1 0 * * * cd /home/johny/LST/CT; python your_script.py
3
cron 可能只是把自己设置到了你的主目录。如果你希望你的脚本在特定的目录下运行,可以考虑在脚本的开头加上类似的内容:
import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))
不过其实你的脚本不应该在意它是从哪个地方运行的。你在脚本里的所有文件路径都应该是相对于脚本本身的,可以使用类似这样的方式:
scriptdir = os.path.dirname(os.path.abspath(__file__))
mypath = os.path.join(scriptdir, 'data', 'mfile.dat')
... etc ...