Вызов внешней программы из python - PullRequest
3 голосов
/ 23 июня 2009

Итак, у меня есть этот скрипт:

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

Я бы хотел написать это на python. Как мне это сделать?

(Как вы можете видеть, он использует библиотеку http://stupidfilter.org/stupidfilter-0.2-1.tar.gz)

Ответы [ 2 ]

8 голосов
/ 23 июня 2009

Чтобы сделать это так же, как скрипт оболочки:

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 голос
/ 23 июня 2009

Вы можете явно запустить команды как вложенные оболочки и прочитать возвращаемое значение, как в сценарии оболочки, а затем обработать результат в Python.

Это проще, чем загрузка функций C.

Если вы действительно хотите загрузить функцию из библиотеки stupidfilter, то сначала посмотрите, не сделал ли это кто-то еще. Если вы не можете найти кого-то, у кого есть, то прочитайте руководство - там рассказано, как звонить с Python на C.

Еще проще использовать то, что уже сделали другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...