Относительные пути в скриптах, выполняемых заданиями 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/ , я получаю сообщение об ошибке «невозможно открыть базу данных».

 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() ... 

Помните, что модуль os.path Python является вашим лучшим другом при манипулировании путями.

вы можете сделать это несколько иначе:

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

использование chdir позволит выполнить ваш скрипт в локальном каталоге и позволит вам сохранить все локальные ссылки без изменений, если у вас есть несколько вариантов, которые могут сэкономить вам некоторое время 🙂