我正在编写一个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
无效。
答案 0 :(得分:1)
使用chunked encoding response返回Jenkins构建日志。
Transfer-Encoding: chunked
根据几个other questions,似乎urllib2
无法处理整个响应,正如您所观察到的,只返回第一个块。
我还建议使用requests包。