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

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

最佳答案

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

关于php - 通过PHP将服务器端.exe的输出流传输到本地Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41946085/

10-12 00:09
查看更多