使用popen
到unix命令时,我会获得控制台的某些输出。
我知道subprocess.popen
具有压低输出的功能。 Suppress output from 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
答案 0 :(得分: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)
在我成为Text+Berg corpus的处理管道开发人员的那一天,我为TreeTagger编写了一个包装类,绕过了包装脚本(无论如何都是质量可疑)。不幸的是,代码是专有的。
答案 1 :(得分:1)
只需使用subprocess.check_output
即可。它将为您捕获字符串中的输出,并且还会自动执行错误检查(如果命令失败则抛出错误)。
答案 2 :(得分:0)
这样做:
result = subprocess.Popen(['command'],
stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0]
可以在documentation中找到更多信息。