python在运行crontab时不提取zipfile

2024-10-03 02:47:47 发布

您现在位置:Python中文网/ 问答频道 /正文

#!/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)

系统配置

  1. Ubuntu操作系统16.04
  2. Python 2.7.12版

$ python extract.py 当我用上面的命令在终端上运行代码时,它工作正常,创建文件夹并将文件解压缩到其中。你知道吗

类似地,当我使用sodu权限创建cron作业时,代码会执行,但不会创建任何文件夹或提取文件。你知道吗

克朗塔布命令:-你知道吗

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. 还通过chmod+x使python程序可执行文件名.py你知道吗

请帮帮我,我哪里做错了。你知道吗


Tags: 代码pyurlhomebindemoubuntuusr
2条回答

我遇到了一个非常类似的问题,结果cron不喜欢导入matplotlib,我不得不指定Agg backend。我是通过在每一行后面加上日志语句来计算出来的,以查看程序在崩溃之前能走多远。当然,我的日志是空的,这告诉我它在进口上崩溃了。你知道吗

TLDR:记录脚本中的每一行

当然,在crontab中运行Python脚本并没有什么错,但是会发生很多不好的事情,因为环境不是您所习惯的环境。你知道吗

键入交互式shell python directory.py时,路径和所有必需的PYTHON环境变量都已设置为登录和交互式shell初始化的一部分,默认情况下,当前目录是您的主目录或您当前所在的任何位置。你知道吗

当从crontab运行相同的命令时,不会指定当前目录(但可能不是您期望的目录),路径仅为/bin:/usr/bin,并且不会设置python环境变量。这意味着您必须调整crontab文件中的环境变量,直到获得正确的Python环境并设置当前目录。你知道吗

相关问题 更多 >