2014-07-21 99 views
-1

我試圖運行一個採用一個參數(CSV文件)的python文件。它在終端中運行腳本時起作用,但當我在cron中運行腳本時會出現錯誤。用sys參數運行cron作業

這是我在終端運行線路:

python nb2.py my_csv_file.csv 

這裏是我的代碼,我試圖在cron運行:

42 13 * * * /usr/local/bin/python2.7 ~/nb/Development/code/nb2.py ~/nb/Development/code/my_csv_file.csv &> /tmp/June_QB_cat.log 

錯誤說,它無法找到一個已經在code文件夾中的sqlite表文件。

+0

這可能只是我,但我通常會發現它更容易診斷關於某人的代碼中的問題時,我可以清楚地看到它 – DTSCode

+0

建議,包括你的NB2文件,以防我的假設不正確 – Foon

+0

是否工作目錄錯誤?嘗試添加'cd〜/ nb/Development/code;'或類似於命令的開始,以更改工作目錄以匹配您在命令行中運行的目錄。 – RichieHindle

回答

2

請注意,當您在終端中運行命令時,您已在〜/ nb/Development/code目錄中,因此您的當前工​​作目錄就是這樣;當你運行它時,它不是。我建議或者在您的代碼中執行(在您的cron作業中)cd ~/nb/Development/code && python nb2.py my_csv_file.csv &> /tmp/logfile.tx t或執行os.chdir("~/nb/Development/code")作爲第一步。 (另外,我建議做/ home /用戶名而不是〜以防萬一你沒有在某個時間點運行cronjob作爲你的用戶名,但考慮到你得到的錯誤,這聽起來像不是問題)

1

你可以得到相對於當前腳本文件的路徑與

import os.path 
relative_path = os.path.join(os.path.dirname(__file__), "sqlitetable")