2017-12-18 1 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) 

시스템 구성파이썬은 ZipFile를 추출하지 않는

  1. 우분투 OS 16.04
  2. 파이썬 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. , 그것은 크론이 성공적으로
  2. 위의 코드를 실행 말한다 오류가 발생하지 않습니다.
  3. 또한 chmod + x filename.py로 실행 가능한 python 프로그램을 만들었습니다.

어디에서 잘못 될 지 도울 수 있도록 도와주세요.

+0

cron 작업이'logmyshit.log' 파일에 올바르게 쓰여 있습니까? – lxop

+1

왜 이것을'sudo'로 실행하려고합니까? 작성한 로그 파일에 오류가없는 것이 확실합니까? – tripleee

+0

'logmyshit.log' 파일의 내용과 날짜는 무엇입니까? – user803422

답변

1

Oups 내부의 각 라인을 기록하지만, 환경이 당신이 사용되는 일이 아니기 때문에 많은 나쁜 일이 발생할 수 있습니다.

대화 형 쉘 python directory.py을 입력하면 PATH 및 모든 필수 PYTHON 환경 변수가 로그인 및 대화 형 쉘 초기화의 일부로 설정되고 현재 디렉토리는 기본적으로 또는 현재 위치하는 곳의 홈 디렉토리입니다.

동일한 명령을 crontab에서 실행하면 현재 디렉토리가 지정되지 않지만 원하는 경로가 아닐 수 있습니다. PATH는 /bin:/usr/bin이며 python 환경 변수는 설정되지 않습니다. 즉, 올바른 Python 환경을 얻을 때까지 crontab 파일에서 환경 변수를 조정해야하며 현재 디렉토리를 설정해야합니다.

+0

당신의 제안 ** 현재의 directroy를 설정하십시오 ** 나를 위해 일했습니다 방금 ​​전에'os.chdir (path)'를 추가했기 때문에 디렉토리가 만들어지고 문제가 해결되었습니다. 감사합니다. –

+0

@JayeshPatil : 더 이상 도움을 필요로하지 않으면 답변 중 하나를 * 수락 *으로 표시해야합니다. –

0

나는 매우 비슷한 문제가 있었고 cron은 matplotlib를 가져 오는 것을 좋아하지 않았기 때문에 Agg 백엔드를 지정해야했습니다. 각 줄 다음에 로그 문을 두어 프로그램을 끝내기까지 프로그램이 얼마나 멀리 있는지 확인했습니다. 물론, 내 통나무는 비어있어 수입품에 추락했다.

TLDR은 : crontab을에서 파이썬 스크립트를 실행 정말 아무 문제가 없다, 스크립트

+0

제안 된 수정 사항은 matplotlib에만 한정되어 있습니다. OP는'requests'와는 별개로 시스템 라이브러리만을 사용하고 GUI는 필요로하지 않습니다. – tripleee

+1

필자는 요점은 각 행이 잘리는 지점을 기록하는 것이 었습니다. 내 수입은 수입과 함께 이상한 cron 시스템 경로 동작입니다. – Fraxr

+0

@Fraxr @Fraxr 나는 당신의 접근 방식을 시도했다. 내 코드의 각 라인을 여전히 오류없이 인쇄했다. –