2016-05-17 31 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++)或許多不同語言的等價函數 –