2016-05-17 32 views
0

我正在写一个python脚本,它接收标准输入上的几个参数。 我使用raw_input()函数,它用于第一个参数,但是当我在while循环中调用它时会完全冻结。Python - 程序停止读取标准输入

这里是我的代码:

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

每个inputraw_input调用等待以'\ n'结尾的行。现场用户点击以Enter结尾的密钥。程序必须将字符串发送到标准输出,连接到标准输入,以'\ n'结尾。所以问题一定是php程序没有足够的发送,或者它没有发送给你的python程序。如果是后者,可能是因为php程序需要'刷新'stdout来将最后一个字符串推送到python。当文件关闭时,刷新是自动的,但stdout通常不会关闭。

+0

问题是我无法修改PHP部分中的单行...我们有许多人使用相同的PHP脚本,并且我是唯一一个有问题才能获得输入的人...所以我可以肯定问题来自我。 –

+0

其他人是否通过管道获取输入?还是只从一个由PHP写的文件? –

+0

他们都使用getline()(C++)或许多不同语言的等价函数 –