使用crontab运行Python程序路径错误

4 投票
2 回答
1828 浏览
提问于 2025-04-17 15:57

我在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 ...

撰写回答