[subprocess.Popen] funktioniert nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Gisi
User
Beiträge: 15
Registriert: Sonntag 13. Mai 2007, 17:28

Hi,

ich arbeite momentan mit nem NER Tool (named entity recognition) und versuche dieses per Kommandozeile bzw besser per subprocess.Popen zu starten.

Wenn ich Start -> ausführen und dann
d:\stanford-ner-2007-11-05\ner sample.txt > d:\scheis\final.txt

eingebe, wobei sample.txt die Inputdatei und final.txt folglich die Outputdatei sind, funktioniert alles.

Verwende ich allerdings das Subproces-Modul:

Code: Alles auswählen

subprocess.Popen(r"d:\stanford-ner-2007-11-05\ner sample.txt > d:\scheis\final.txt", shell=True)
kommt immer folgender Fehler:
Exception in thread "main" java.lang.NoClassDefFoundError: edu/stanford/nlp/ie/crf/CRFClassifier

Ich dachte, subprocess.Popen mit dem Argument Shell=true würde ganz genau dasselbe tun, wie wenn ich das erste Argument über Start-Ausführen eingebe...

Irgendwelche Ideen?

Thx,

Gisi
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Ich hab mir das mit dem Shell Attribute noch nie so genau angeguckt, ich hätte das ganze so an subprocess übergeben:

Code: Alles auswählen

out_file = "d:\scheis\final.txt"
subprocess.Popen([r"d:\stanford-ner-2007-11-05\ner", "sample.txt"], stdout=open(out_file, "w"))
print open(out_file).read()
Gisi
User
Beiträge: 15
Registriert: Sonntag 13. Mai 2007, 17:28

Hi,

danke für den Tipp, aber es konnte anders gelöst werden. Eine .jar Datei musste in denselben Ordner gelegt werden, wo auch die Python Funktion ist. Damit funktioniert es.

Ciao
Antworten