2016-05-17 19 views
0

Ich schreibe ein Python-Skript, das mehrere Parameter auf seiner Standardeingabe erhält. Ich benutze die Funktion raw_input(), die für die ersten Parameter arbeitet, aber total einfriert, wenn ich sie innerhalb einer while-Schleife anrufe.Python - Programm stoppt, um Standardeingabe zu lesen

Hier ist mein Code:

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 

Eigentlich dieses Programm funktioniert, wenn ich alle Parameter selbst in meiner Konsole senden. Aber es soll von einem PHP-Skript aufgerufen werden, das Parameter auf seiner Standard-Datei sendet.

Warum funktioniert diese letzte raw_input() nicht, wenn Parameter von einem PHP-Skript gesendet werden?

Vielen Dank für Ihre Antworten und Entschuldigung für schlechtes Englisch.

Antwort

1

Jeder Aufruf input oder raw_input wartet auf eine Zeile, die mit '\ n' endet. Ein Live-Benutzer trifft Schlüssel, die mit dem Schlüssel Enter enden. Ein Programm muss Strings an stdout senden, die mit stdin verbunden sind und mit '\ n' enden. Das Problem muss also sein, dass das PHP-Programm nicht genug sendet, oder dass nicht alles, was es sendet, an Ihr Python-Programm gelangt. Wenn das letztere, könnte es sein, dass das php-Programm stdout "flush" muss, um die letzte Zeichenfolge an python zu übertragen. Wenn eine Datei geschlossen wird, erfolgt die automatische Löschung, aber die Standardausgabe wird normalerweise nicht geschlossen.

+0

Das Problem ist, ich kann nicht eine einzige Zeile im PHP-Teil ändern ... Wir sind viele mit dem gleichen PHP-Skript arbeiten und ich bin der einzige, der Probleme haben, die Eingabe zu bekommen ... Also ich kann sicher sein, dass das Problem von mir kommt. –

+0

Erhalten andere den Eingang über eine Leitung? Oder nur aus einer Datei von PHP geschrieben? –

+0

Sie verwenden alle Funktionen wie getline() (C++) oder Äquivalente in vielen verschiedenen Sprachen –