我正在编写一个python脚本,该脚本在他的标准输入中接收几个参数。我使用raw_input()函数,它适用于firsts参数,但当我在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上向它发送参数。
当参数由php脚本发送时,为什么最后一个raw_input()不起作用?
谢谢你的回答,很抱歉英语不好。
每个input
或raw_input
调用都会等待一个以'\n'结尾的行。实时用户按以Enter
键结尾的键。程序必须将字符串发送到连接到stdin的stdout,并以'\n'结尾。因此,问题一定是php程序发送的信息不够,或者它发送的每一个信息都没有到达您的python程序。如果是后者,可能是php程序需要"刷新"stdout以将最后一个字符串推送到python。当文件关闭时,刷新是自动的,但stdout通常不会关闭。