从服务器端.exe通过PHP将输出流输出到本地Python

时间:2017-01-30 21:55:11

标签: php python

我遇到的情况是我在本地运行Python脚本并使用f = urllib.urlopen()来查询服务器并传递一些参数。服务器端的PHP脚本接受参数,检查它们,并使用passthru()命令将它们传递给可执行文件。可执行文件运行,然后输出传递回客户端,使用response = f.read()读取它。然后打印响应。

这是有效的,但输出在过程结束时在一个大块中返回。我想要做的是在运行时在本地python终端中输出在线可执行文件的输出。有谁知道一个好的方法来采取这里?我尝试了for line in f: print line,但是它提供了与以前相同的行为。

1 个答案:

答案 0 :(得分:1)

documentation for urllib表示“read()方法,如果size参数被省略或为负,在数据流结束之前可能无法读取;没有好办法确定整个流来自在一般情况下已读取套接字。“

所以你可以尝试一次处理一个角色,如下所示:

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