我正在写一个python脚本,它在标准输入上接收几个参数。 我使用raw_input()函数,该函数适用于第一个参数,但是当我在while循环中调用它时完全冻结。
这是我的代码:
def launch_trade(logger):
Kerviel = Trader()
param = raw_input() #Works fine
Kerviel.Capital = float(param)
param = raw_input() #Works fine
Kerviel.NbDays = int(param)
param = raw_input() #Works Fine
while (param != '--end--'):
Kerviel.action(float(param), logger)
Kerviel.Cours.append(param)
param = raw_input() #Here it infinite wait
实际上,当我在控制台中发送所有参数时,此程序可以正常工作。但它应该由一个php脚本调用,该脚本在他的stdin上发送参数。
为什么这个最后的raw_input()在PHP脚本发送参数时不起作用?
感谢您的回答,对不起英语感到抱歉。
答案 0 :(得分:1)
每个input
或raw_input
调用都会等待以'\ n'结尾的行。实时用户点击以Enter
键结尾的键。程序必须将字符串发送到stdout,连接到stdin,以'\ n'结尾。所以问题必须是php程序没有发送足够的,或者它发送的eveything没有发送到你的python程序。如果是后者,可能是php程序需要'刷新'stdout以将最后一个字符串推送到python。当文件关闭时,刷新是自动的,但通常不会关闭stdout。