如果语句返回错误的数据

时间:2014-07-28 16:04:51

标签: python json if-statement urllib2

我有一些类似的代码:它通过一个列表并查询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

它说“真实”,但为什么它会“脱机”打印?

2 个答案:

答案 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"