os.system を使用してシェル コマンドを実行する Python スクリプトがあります。これらのコマンドからの出力は画面にエコーされます。私はこれが好きで、それを維持する必要があります。また、システム コールからの出力の内容に基づいて、スクリプトがアクションを実行できるようにしたいと考えています。これどうやってするの?
私の特定のケースでは、私は電話してos.system("svn update")
います。出力を画面に表示する必要があり、(競合が発生した場合など)、ユーザーは svn と対話できる必要があります。出力に基づいてスクリプトがアクションを実行できるようにしたいと考えています。たとえば、ビルド スクリプトが更新されたことがわかった場合にビルドをトリガーします。
私は I/O を自分で処理したくない (それは不必要に複雑に思えるでしょう) し、後でクリーンアップする必要がある一時ファイルに出力を送信したくありません (ただし、必要に応じて処理します)。
編集:
これが私のテストスクリプトです:
#!/usr/bin/python -t
import subprocess
output = subprocess.check_output(["echo","one"])
print "python:", output
output = subprocess.check_output(["echo", "two"], shell=True)
print "python:", output
output = subprocess.check_output("echo three", shell=True)
print "python:", output
そして、ここにその出力があります:
$ ./pytest
python: one
python:
python: three
(コード ブロックが表示されない末尾に余分な空白行があります。) 次のようなものが期待されます。
$ ./pytest
one
python: one
two
python:
three
python: three