我正在设置我的第一个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
在my_db.db
(与/home/path/to/my/script/
相同的目录)中查找my_script.py
而不是crontab所在的目录?
欢迎提供其他疑难解答建议。
注意 - 我认为问题可能是路径问题,因为当我尝试使用my_script.py
从python2.7 /home/path/to/my/script/my_script.py
以外的任何位置运行/home/path/to/my/script/
时,我收到“无法打开数据库”错误。
答案 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将允许在本地目录中执行脚本并允许您保持所有本地引用不变,如果您有多个本地引用可以节省一些时间:)