cron作业执行的脚本中的相对路径

时间:2012-05-02 22:06:51

标签: python cron crontab

我正在设置我的第一个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.pymy_db.db(与/home/path/to/my/script/相同的目录)中查找my_script.py而不是crontab所在的目录?

欢迎提供其他疑难解答建议。

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

2 个答案:

答案 0 :(得分:14)

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 module是你最好的朋友。

答案 1 :(得分:1)

你可能想要有所不同:

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

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