2017-12-18 207 views
-1
#!/usr/bin/python 
import requests, zipfile, StringIO, sys 
extractDir = "myfolder" 
zip_file_url = "download url" 
response = requests.get(zip_file_url) 
zipDocument = zipfile.ZipFile(StringIO.StringIO(response.content)) 
zipinfos = zipDocument.infolist() 
for zipinfo in zipinfos: 
    extrat = zipDocument.extract(zipinfo,path=extractDir) 

系統配置蟒蛇不提取zip文件

  1. Ubuntu的OS 16.04
  2. 的Python 2.7.12

$ python extract.py 當我運行與終端代碼上面的命令,它可以正常工作並創建文件夾並將文件解壓縮到該文件夾​​中。

同樣,當我使用sodu權限創建cron作業時,代碼將執行但不會創建任何文件夾或提取文件。

crontab命令: -

40 10 * * * /usr/bin/sudo /usr/bin/python /home/ubuntu/demo/directory.py > /home/ubuntu/demo/logmyshit.log 2>&1 

也試過

40 10 * * * /usr/bin/python /home/ubuntu/demo/directory.py > /home/ubuntu/demo/logmyshit.log 2>&1 

注:

  1. 我檢查系統日誌,它說,cron是成功運行
  2. 上面的代碼沒有錯誤
  3. 也使python程序可執行的chmod + x filename.py

請幫我在哪裏出錯。

+0

cron作業是否正確地寫入到你的'logmyshit.log'文件中? – lxop

+1

你爲什麼試圖用'sudo'運行這個?你確定你寫的日誌文件沒有錯誤嗎? – tripleee

+0

你的'logmyshit.log'文件的內容和日期是什麼? – user803422

回答

1

Oups裏面,沒有什麼真的錯了運行在crontab中一個Python腳本,但很多不好的事情都可能發生,因爲環境是不是你來的人。

當您鍵入交互式shell python directory.py時,PATH和所有必需的PYTHON環境變量已被設置爲登錄和交互式shell初始化的一部分,當前目錄默認爲您的主目錄或您當前所在的任何位置。

當從crontab運行相同的命令時,當前目錄未指定(但可能不是您所期望的),PATH僅爲/bin:/usr/bin並且未設置python環境變量。這意味着你必須調整crontab文件中的環境變量,直到你獲得了正確的Python環境,並設置當前目錄。

+0

你的建議**設置當前directroy **爲我工作 我剛剛添加'os.chdir(路徑)'在我的目錄被創建並解決了我的問題。 謝謝大家。 –

+0

@JayeshPatil:如果您在這裏不再需要幫助,您應該將其中一個答案標記爲* accepted *。 –

0

我有一個非常類似的問題,事實證明,cron不喜歡導入matplotlib,我最終不得不指定Agg後端。我想通過在每一行之後放置日誌語句來看看程序在被刪除之前得到了多少。當然,我的日誌是空的,這讓我感到震驚,因爲它導致進口崩潰。

TLDR:記錄每行的腳本

+0

不過,您建議的修補程序對於matplotlib非常具體。 OP僅使用「請求」之外的系統庫,而不需要GUI。 – tripleee

+1

我想我的觀點是記錄每一行,希望能夠看到它的突破點。我的賭注是一些奇怪的cron系統路徑行爲與進口。 – Fraxr

+0

@Fraxr我也試過你的方法,打印我的代碼的每一行仍然沒有錯誤 –