9

我正在设置我的第一个 cron 作业,但它不起作用。我认为问题可能是相对路径问题。

给定 cron 工作:

*/1 * * * * python2.7 /home/path/to/my/script/my_script.py

和 my_script.py:

import sqlite3
db = sqlite3.connect('my_db.db')
cur = db.cursor()
...

我如何确保在(与房屋相同的目录)中my_script.py查找而不是在 crontab 所在的任何目录中查找?my_db.db/home/path/to/my/script/my_script.py

也欢迎其他故障排除建议。

注意 - 我认为问题可能是路径问题,因为当我尝试从 以外的任何位置运行my_script.py时,我收到“无法打开数据库”错误。python2.7 /home/path/to/my/script/my_script.py/home/path/to/my/script/

4

3 回答 3

15
import sqlite3
import os

dir_path = os.path.dirname(os.path.abspath(__file__))

db = sqlite3.connect(os.path.join(dir_path, 'my_db.db'))
cur = db.cursor()
...

请记住,在操作路径时,Python 的os.path 模块是您最好的朋友。

于 2012-05-02T22:13:08.800 回答
2

你可能想做点不同的事:

os.chdir(os.path.dirname(os.path.abspath(__file__)))
db = sqlite3.connect('my_db.db')

使用 chdir 将允许在本地目录中执行您的脚本,如果您有多个本地引用,则允许您保持所有本地引用不变,这可能会节省您一些时间:)

于 2014-04-17T19:45:35.117 回答
0

我被卡住了一段时间,因为我没有使用 python 命令的完整路径(可以用 来检查which python)。

您也可以尝试在 crontab 文件中设置 PATH。

于 2021-08-15T18:40:13.990 回答