2012-05-02 20 views
8

私は最初のcronジョブを設定していますが、動作していません。私はこの問題が相対的なパスの問題かもしれないと思う。cronジョブによって実行されるスクリプトの相対パス

考えるとcronジョブ:

*/1 * * * * python2.7 /home/path/to/my/script/my_script.py 

とmy_script.py:私はmy_script.py/home/path/to/my/script/my_script.pyを収容し、同じディレクトリ)にmy_db.dbを探していないことを確認してくださいするにはどうすればよい

import sqlite3 
db = sqlite3.connect('my_db.db') 
cur = db.cursor() 
... 

何でもディレクトリcrontabの生活ですか?

その他のトラブルシューティングの提案も歓迎します。

注 - 私は/home/path/to/my/script/以外の任意の場所からpython2.7 /home/path/to/my/script/my_script.pyを使用してmy_script.pyを実行しようとしたとき、私は「データベースを開くことができません」というエラーが表示されますので、問題はパスの問題かもしれないと思います。

答えて

12
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

ありがとう!このアプローチは私が 'python2.7 /home/path/to/my/script/my_script.py'...を使ってスクリプトを実行することを可能にします。しかし、まだcronの仕事はうまくいかないので、トラブルシューティングを続ける必要があります。良いニュースは、私が1つの理論を削除し、os.pathについて学んだことです。再度、感謝します。 –

1

あなたは少し違っそれをやってみたいことがあります。CHDIRを使用して

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

は、あなたが複数ある場合、それは保存することがローカルディレクトリにあなたのスクリプトを実行し、あなたは変わらず、すべてのローカル参照を維持できるようにすることができますあなたはいくつかの時間:)

関連する問題