0

使用popento unix 命令时,我将某些输出发送到控制台。

我知道它subprocess.popen具有抑制输出的功能。抑制 subprocess.Popen 的输出

是否 os.popen 具有相同的抑制功能?

请注意,我的 unix 命令中有管道,我无法开始subprocess.Popen工作。我的命令看起来像这样

$ echo "es ist also grotesk , wenn herr jospin die europäische richtlinie und die britische datumsgestützte ausfuhrregelung gröblichst mißachtet und durch seine eigenen bedingungen zu ersetzen trachtet ." | treetagger/cmd/tree-tagger-german-utf8

4

3 回答 3

2

不要使用管道,不要使用os.popen

import subprocess

text = "es ist also ..."
tt = subprocess.Popen('treetagger/cmd/tree-tagger-german-utf8', 
                      stdout=subprocess.PIPE, 
                      stderr=subprocess.PIPE,
                      stdin=subprocess.PIPE)
tagged, stderr = tt.communicate(txt)

Back in the day when I was the processing pipeline developer for the Text+Berg corpus, I wrote a wrapper class for the TreeTagger, circumventing the wrapper scripts (which are of dubious quality anyway). Unfortunately, the code is proprietary.

于 2013-03-20T05:55:16.993 回答
1

改用就好subprocess.check_output了。它将为您捕获字符串中的输出,并且还会自动进行错误检查(如果命令失败则抛出错误)。

于 2013-03-20T03:48:01.463 回答
0

这样做:

result = subprocess.Popen(['command'], 
           stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0]  

更多信息可以在文档中找到。

于 2013-03-20T03:48:45.287 回答