Относительные пути в скриптах, выполняемых заданиями 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 Solutions collect form web for “Относительные пути в скриптах, выполняемых заданиями cron”

 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 позволит выполнить ваш скрипт в локальном каталоге и позволит вам сохранить все локальные ссылки без изменений, если у вас есть несколько вариантов, которые могут сэкономить вам некоторое время 🙂

  • Crontab не будет запускать скрипт python
  • Запуск phantomJS из скрипта в cronjob
  • Использование crontab с django
  • Как сказать python не интерпретировать хеш-символ как комментарий?
  • Python Script не работает в crontab, вызывающем pysaunter
  • Celery-Django: команды управления сельдерей и джанго
  • Crontab не запускает скрипт python
  • python - работа с crontab
  • Python - лучший язык программирования в мире.