Python - 程序停止读取标准输入

时间:2016-05-17 15:28:26

标签: python stdin raw-input

我正在写一个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脚本发送参数时不起作用?

感谢您的回答,对不起英语感到抱歉。

1 个答案:

答案 0 :(得分:1)

每个inputraw_input调用都会等待以'\ n'结尾的行。实时用户点击以Enter键结尾的键。程序必须将字符串发送到stdout,连接到stdin,以'\ n'结尾。所以问题必须是php程序没有发送足够的,或者它发送的eveything没有发送到你的python程序。如果是后者,可能是php程序需要'刷新'stdout以将最后一个字符串推送到python。当文件关闭时,刷新是自动的,但通常不会关闭stdout。