2009-06-23 6 views
3

J'ai donc ce script shell:Appeler un programme externe de python

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 

Je voudrais écrire en python. Comment puis-je faire cela?

(Comme vous pouvez le voir utilise la bibliothèque http://stupidfilter.org/stupidfilter-0.2-1.tar.gz)

+0

J'ai changé le titre pour que les gens en quête de ce trouveront une excellente réponse –

+0

En tant que script shell de noskio, vous pouvez optimiser en enregistrant la sortie de la commande en backticks dans une variable, puis en comparant la variable dans les deux instructions if - plutôt que d'exécuter le code deux fois. –

Répondre

8

Pour ce faire, tout comme le script shell fait:

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

Vous pouvez clairement exécuter les commandes en tant que sous-coquilles et lire la valeur de retour, tout comme dans le script shell et le processus alors le résultat en Python.

Ceci est plus simple que de charger des fonctions C.

Si vous souhaitez vraiment charger une fonction à partir de la bibliothèque stupidfilter, vérifiez d'abord si quelqu'un d'autre l'a déjà fait. Si vous ne pouvez pas trouver quelqu'un qui a, alors lisez le manual - comment appeler de Python sur C est couvert dedans là.

Il est toujours plus simple d'utiliser ce que d'autres ont déjà fait.

Questions connexes