【问题标题】:Using urllib2 to fetch plain text, result isn't full使用 urllib2 获取纯文本,结果不完整
【发布时间】:2016-05-22 00:29:12
【问题描述】:

我正在编写一个 python 脚本来解析 jenkins 的作业结果。我正在使用 urllib2 来获取 consoleText,但我收到的文件不完整。获取文件的代码是:

data = urllib2.urlopen('http://<server>/job/<jobname>/<buildid>/consoleText')
lines = data.readlines()

我得到的行数是 2306,而控制台日志中的实际行数是 37521。我可以通过 wget 检查购买获取文件:

$ wget 'http://<server>/job/<jobname>/<buildid>/consoleText'
$ wc -l consoleText
37521

为什么 urlopen 没有给我完整的结果?

更新:

使用requests(由@svrist 建议)而不是urllib2 没有这样的问题,所以我改用它。我的新代码是:

data = requests.get('http://<server>/job/<jobname>/<buildid>/consoleText')
lines = [l for l in data.iter_lines()]

但我仍然不知道为什么urllib2.urlopen 不能正常工作。

【问题讨论】:

  • 不是那种人,但每个人都会说:“使用请求”
  • 您认为您可以请求的项目数量是否有上限?

标签: python jenkins python-requests urllib2


【解决方案1】:

使用 chunked encoding response 返回 Jenkins 构建日志。

Transfer-Encoding: chunked

基于几个otherquestions,似乎urllib2 不处理整个响应,并且正如您所观察到的,只返回第一个块。

我还建议使用requests 包。

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2018-07-13
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多