我有一些类似的代码:它通过一个列表并查询API以检查它是否返回一个JSON对象:
for one in many:
print "Checking "+one
url = "http://an.api/"+one
contents = urllib2.urlopen(url)
print len(contents.read()) > 10
if len(contents.read()) > 10:
print "online"
else:
print "offline"
如果返回JSON,则用户在线,否则他处于离线状态。运行脚本会返回类似于此的内容:
Checking a
True
offline
Checking b
True
offline
Checking c
False
offline
它说“真实”,但为什么它会“脱机”打印?
答案 0 :(得分:2)
您已经读取来自网址的数据,您无法再次阅读。第二个.read()
调用返回一个空字符串。
首先将读取的数据存储在变量中:
contents = urllib2.urlopen(url)
data = contents.read()
print len(data) > 10
if len(data) > 10:
print "online"
else:
print "offline"
答案 1 :(得分:1)
如果要在输出上执行多项操作,则需要保存读取
for one in many:
print "Checking "+one
url = "http://an.api/"+one
contents = urllib2.urlopen(url)
myData = contents.read()
print len(myData) > 10
if len(myData) > 10:
print "online"
else:
print "offline"