Неправильный путь приводит к тому, что программа python запускается с использованием crontab

У меня есть скрипт на питоне под линукс, которому нужно определить текущую рабочую директорию. Часть программы, которая это делает:

import os
cwd = os.getcwd()
print cwd

Когда я запускаю программу, она дает мне правильный ответ:

/home/johny/LST/CT

Но когда я запускаю его с помощью crontab, он дает мне это:

/home/johny

Даже когда я помещаю его в более глубокие папки, получается тот же путь. Кто-нибудь знает, в чем может быть проблема?


person f.ashouri    schedule 15.02.2013    source источник


Ответы (2)


cron, вероятно, просто устанавливает себя в ваш домашний каталог. Если вам нужно, чтобы ваш скрипт запускался в определенном каталоге, рассмотрите возможность использования чего-то вроде

import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))

в верхней части вашего скрипта, хотя на самом деле ваш скрипт не должен заботиться о том, откуда он запускается. Все ваши пути к файлам в скрипте должны быть относительно скрипта, используя что-то вроде:

scriptdir = os.path.dirname(os.path.abspath(__file__))

mypath = os.path.join(scriptdir, 'data', 'mfile.dat')

... etc ...
person sotapme    schedule 15.02.2013

В вашем файле crontab выполните:

1 0 * * * cd /home/johny/LST/CT; python your_script.py
person mechanical_meat    schedule 15.02.2013