-1

端末から出力を取得するには、端末でプロセスを実行する必要があります。

import subprocess
subprocess.check_output(["my_util", "some_file.txt", " | grep 'Some data1' | awk '{print $2}'"])

#or
subprocess.check_output(["my_util", "full_path/some_file.txt", "| grep 'Some data1'", "| awk '{print $2}'"])

REPL では何も起こりませんが、ターミナルで手動で実行すると適切な出力が得られます。

アップデート:

崇高なテキストからの出力:

my_util FAIL formats: can't open input pipe `| grep 'Sample data1'': premature EOF
my_util FAIL formats: can't open input pipe `| awk '{print $2}'': premature EOF
Traceback (most recent call last):
  File "/test1.py", line 4, in <module>
    "| grep 'Sample data1'", "| awk '{print $2}'"])
  File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '["my_util", "full_path/some_file.txt", "| grep 'Some data1'", "| awk '{print $2}'"]' returned non-zero exit status 2
4

2 に答える 2

1

サブプロセスの代わりに os.system を使用できます

import os

os.system("my_util some_file.txt | grep 'Some data1' | awk '{print $2}'" )
于 2013-08-16T06:25:25.603 に答える
0

サブプロセスでそのようなコマンドをパイプできるとは思いません。

これは、サブプロセスでパイプされたコマンドを実行する方法を説明する回答付きの質問です。

これを行う方法の別の説明を次に示します。

于 2013-08-16T05:04:38.470 に答える