我遇到的情况是,我在本地运行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/