используя трубу с питоном - PullRequest
0 голосов
/ 15 июня 2011
import re
import subprocess

sub = subprocess.Popen(['/home/karthik/Downloads/stanford-parser-2011-06-   08/lexparser.csh'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr = subprocess.PIPE)

sub.stdin.write("i am a fan of ac milan which is the best club in the world")

relns = []

while(True):
    rel = sub.stdout.readline()
        m = re.search("Sentence skipped", rel)

    if m != None:
            print 'stop'
            sys.exit(0)

        if rel == '\n':
                break
        relns.append(rel) 

print relns

sub.terminate()

Итак, я хочу использовать синтаксический анализатор Стэнфорда и использовать lexparser.csh для разбора этой строки текста. Но когда я запускаю этот кусок кода, я получаю вывод текста по умолчанию. Фактический текст, указанный в, не анализируется. Итак, правильно ли я использую каналы? И я видел во многих примерах - «-» используется вместе с командой. Почему это используется? Потому что, когда я использую это, скрипт просто останавливается на sub.stdout.readline ()

1 Ответ

1 голос
/ 15 июня 2011

Возможно, вам придется позвонить flush() на sub.stdin после записи.

...