奇怪的python打印行为

时间:2010-12-16 14:56:00

标签: python google-app-engine printing

为什么这不打印任何东西:

for item in pipe.json["value"]["items"]:
    print item["pubDate"]
但这样做:
for item in pipe.json["value"]["items"]:
   print item["pubDate"] + "\n"
附:循环在另一个循环中运行。

p.p.s。这是在谷歌应用程序引擎应用程序内运行。我已经查看了http响应,它在第一种情况下完全是空的。

4 个答案:

答案 0 :(得分:4)

这可能是缓冲问题,在这种情况下,刷新标准输出会有所帮助。

import sys
sys.stdout.flush()

答案 1 :(得分:1)

您使用某种wsgi框架,还是只是尝试编写纯CGI代码(这是一个错误?)

您可能根本不想在这里使用print,而是使用框架添加到响应的方法(对于webapp,self.response.out.write)。我的猜测是,如果没有额外的\n,你就会将所有这些数据写入HTTP标头,并且使用它你只会丢失输出的第一行。

答案 2 :(得分:1)

在GAE上如果你想使用print进行输出,你必须在打印之前打印一个空字符串,这样就不会出现这样的问题:

print ""
print "something"

答案 3 :(得分:0)

这只是一个疯狂的猜测,但如果item ['pubDate']是一个非字符串对象,它可能是特殊方法之间差异的结果。也许__str__方法不会返回任何内容,而__add__方法会执行不同的操作。