我有这样一种情况,我在本地运行 Python 脚本并使用 f = urllib.urlopen() 查询服务器并传递一些参数。服务器端的 PHP 脚本接受参数、检查它们并使用 passthru() 命令将它们传递给可执行文件。可执行文件运行,然后将输出传递回客户端,在客户端使用 response = f.read() 读取它。然后打印响应。
这是可行的,但是输出会在过程结束时以一个大块的形式返回。我想要做的是在运行时在 python 终端本地打印在线可执行文件的输出。有谁知道在这里采取的好方法?我试过 for line in f: print line,但它给出了与以前相同的行为。
请您参考如下方法:
documentation for urllib表示“如果 size 参数被省略或为负数,则 read() 方法可能不会读取数据流的末尾;在一般情况下,没有好的方法可以确定来自套接字的整个流已被读取”
因此您可以尝试一次处理一个字符,如下所示:
line = ''
while True:
char = f.read(1)
if not char:
break
elif char == '\n':
print line
line = ''
else:
line += char
# or a tidier form based on
# http://bob.ippoli.to/archives/2005/06/14/python-iterators-and-sentinel-values/
line = ''
for char in iter(lambda: f.read(1), ''):
if char == '\n':
print line
line = ''
else:
line += char
