2016-05-17 22 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スクリプトによって呼び出されるはずです。

なぜ、この最後のraw_input()は、パラメータがPHPスクリプトによって送信されたときに機能しないのですか?

ご回答いただきありがとうございます。悪い英語をお送りいただきありがとうございます。

答えて

1

inputまたはraw_inputは、 '\ n'で終わる行を待機します。ライブユーザはEnterキーで終了するキーにヒットします。プログラムはstdoutに文字列を送り、stdinに接続し、 '\ n'で終わらなければなりません。したがって、問題は、PHPプログラムが十分に送信していないか、送信した電子メールがあなたのPythonプログラムに到達しないことです。後者の場合、PHPプログラムが最後の文字列をPythonにプッシュするためにstdoutを 'フラッシュ'する必要があるかもしれません。ファイルが閉じられると、フラッシュは自動的に行われますが、標準出力は通常閉じられません。

+0

問題はPHP部分の1行を変更できないことです...私は同じPHPスクリプトで作業することが多く、私は入力を得るために問題を抱えている唯一の人です...だから私は問題は私から来ていると確信することができます。 –

+0

他の人がパイプを通して入力を取得していますか?または、PHPによって書かれたファイルからのみ? –

+0

彼らはすべてgetline()(C++)のような関数、または多くの異なる言語 –

関連する問題