我想使用 etree、expat 或类似的,但我知道 etree 更容易使用。但是,当我已经在 Ubuntu 11.10 上安装了 Python 2.7.2 时,如何安装它?
我可以通过 Google 找到的所有文档都表明,默认情况下 Python 可以使用 xml 解析。或者至少当我搜索 install xml parser python 或类似词的任何组合时,还包括 etree 或 expat 我找不到要采取的步骤(命令行安装方法)。
当我在终端中运行 python 脚本时,它会按预期运行;下载文件并将其保存在所需位置。
sudo python script.py
Run Code Online (Sandbox Code Playgroud)
我已将 python 脚本添加到根 crontab,但随后它按预期运行,除非它不写入文件。
$ sudo crontab -l
> * * * * * python /home/test/script.py >> /var/log/test.log 2>&1
Run Code Online (Sandbox Code Playgroud)
下面是一个仍然存在问题的简化脚本:
#!/usr/bin/python
scheduleUrl = 'http://test.com/schedule.xml'
schedule = '/var/test/schedule.xml'
# Download url and save as filename
def wget(url, filename):
import urllib2
try:
response = urllib2.urlopen(url)
except Exception:
import traceback
logging.exception('generic exception: ' + traceback.format_exc())
else:
print('writing:'+filename+';')
output = open(filename,'wb')
output.write(response.read())
output.close()
# Download the schedule
wget(scheduleUrl, schedule)
Run Code Online (Sandbox Code Playgroud)
我确实收到消息“正在写入:文件名;” 在日志中,cron 条目输出到日志中。但实际文件无处可寻......
目录 /var/test 被修改为 777 并且使用任何用户,我都可以随意添加和更改文件。
我知道我可以创建一个可以在后台运行和执行某些任务的服务。但我实际上只需要执行一个需要每 5 分钟完成一次的任务。它不需要在两者之间运行。
现在我在想,让 crontab 条目每 5 分钟运行一次(python)下载脚本可能是一个更好的主意。我是 Linux 新手,可能对 cron 的用途和好的做法有不正确的理解,但对我来说,这似乎是一种更稳定的方式,因为如果脚本因任何原因停止,它只会重新-跑。
在这种情况下,推荐的方法是什么?一个等待 5 分钟的(行为良好的)守护进程,或者一个运行脚本的 cron,在完成时停止。