Ich bin ein Python-Skript zu schreiben, die eine Reihe von Operationen in einer Schleife durchführt, durch subprocess Telefonieren, etwa so:unvorhersehbares Verhalten mit Python subprocess nennt
os.system('./svm_learn -z p -t 2 trial-input model')
os.system('./svm_classify test-input model pred')
os.system('python read-svm-rank.py')
score = os.popen('python scorer.py -g gold-test -i out').readline()
Wenn ich die Anrufe nacheinander einzeln machen andere in der Shell funktionieren sie gut. Aber innerhalb des Drehbuchs brechen sie immer. Ich habe die Quelle des Fehlers zurückverfolgt und es scheint, dass die Ausgabedateien gegen Ende abgeschnitten werden (was mich zu der Annahme verleitet, dass Anrufe getätigt werden, ohne dass vorherige beendet werden).
Ich versuchte mit subprocess.Popen und dann mit der Methode wait() des Popen-Objekts, aber ohne Erfolg. Das Skript bricht immer noch ab.
Irgendwelche Ideen, was hier vor sich geht?
"os.system" und "subprocess.call" warten beide auf den Abschluss des Systemaufrufs, bevor sie zurückkehren. Wenn Sie Hilfe bei der Fehlersuche in Ihrem Programm benötigen, benötigen wir weitere Informationen. Auch 'os.system ('python read-svm-rank.py')' sieht sehr verdächtig für mich aus, wäre es möglich zu importieren, was Sie von read-svm-rank.py brauchen? –
Sind Ihre Dateien zufällig auf einem Remote-Dateisystem (wie NFS)? – amcnabb
Der Benutzer löste tatsächlich sein eigenes Problem und veröffentlichte seine Lösung als Kommentar zu einer gelöschten Antwort. Es wurde von Dateien verursacht, die nicht geschlossen wurden und daher nicht auf die Festplatte ausgeleert wurden. – agf