2009-06-23 38 views
3

So habe ich dieses Shell-Skript:ein externes Programm aus Python aufrufen

echo "Enter text to be classified, hit return to run classification." 
read text 

if [ `echo "$text" | sed -r 's/ +/ /g' | bin/stupidfilter data/c_rbf` = "1.000000" ] 
then 
    echo "Text is not likely to be stupid." 
fi 

if [ `echo "$text" | sed -r 's/ +/ /g' | bin/stupidfilter data/c_rbf` = "0.000000" ] 
then 
    echo "Text is likely to be stupid." 
fi 

Ich mag wäre es in Python zu schreiben. Wie mache ich das?

(Wie Sie sehen können es verwendet die Bibliothek http://stupidfilter.org/stupidfilter-0.2-1.tar.gz)

+0

ich den Titel geändert, damit die Menschen für diese Suche wird noskio die ausgezeichnete Antwort –

+0

Als Shell-Skript finden Sie durch Speichern der Ausgabe des Befehls optimieren in Backticks in eine Variable und vergleicht dann die Variable in den zwei if-Anweisungen - anstatt den Code zweimal auszuführen. –

Antwort

8

es einfach zu tun, wie das Shell-Skript tut:

import subprocess 

text = raw_input("Enter text to be classified: ") 
p1 = subprocess.Popen('bin/stupidfilter', 'data/c_trbf') 
stupid = float(p1.communicate(text)[0]) 

if stupid: 
    print "Text is likely to be stupid" 
else: 
    print "Text is not likely to be stupid" 
1

Sie eindeutig die Befehle als Unterschalen laufen können und den Rückgabewert lesen, ebenso wie in dem Shell-Skript, und dann das Ergebnis in Python verarbeiten.

Dies ist einfacher als das Laden von C-Funktionen.

Wenn Sie wirklich eine Funktion aus der Bibliothek stupidfilter laden möchten, dann sehen Sie zuerst, ob jemand anderes es bereits getan hat. Wenn du niemanden finden kannst, der das hat, dann lies die manual - wie man von Python auf C aufruft ist dort abgedeckt.

Es ist noch einfacher zu verwenden, was andere bereits getan haben.

Verwandte Themen