Относительные пути в сценариях, выполняемых заданиями cron
я настраиваю свою первую работу 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/
, Я получаю ошибку" невозможно открыть базу данных".
2 ответов
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.модуль пути является вашим лучшим другом при манипулировании путями.
вы можете сделать это немного по-другому:
os.chdir(os.path.dirname(os.path.abspath(__file__)))
db = sqlite3.connect('my_db.db')
использование chdir позволит вам выполнить скрипт в локальном каталоге и позволит вам сохранить все локальные ссылки без изменений, если у вас есть более одного, это может сэкономить вам время:)