pythonのos.system()のコマンドからstdioをリダイレクトする
質問
通常、私はの値を変更することにより、pythonのstdoutを変更できます sys.stdout
. 。ただし、これは影響するだけのようです print
ステートメント。ですから、私が(コンソールへ)、経由で実行されるプログラムの出力(コンソールへ)を抑制する方法はありますか os.system()
Pythonでコマンド?
解決
プログラムを経由して実行することを検討できます subprocess.Popen
, 、 と subprocess.PIPE
コミュニケーション、そしてあなたが望む場所にその出力を押し出しますが、そのまま、 os.system
コマンドを実行するだけで、他に何もありません。
from subprocess import Popen, PIPE
p = Popen(['command', 'and', 'args'], stdout=PIPE, stderr=PIPE, stdin=PIPE)
output = p.stdout.read()
p.stdin.write(input)
私の意見でははるかに柔軟です。完全なドキュメントをご覧ください。 Pythonサブプロセスモジュール
他のヒント
UNIXシステムでは、コマンド自体の一部としてSTDERRとSTDOUTを /dev /nullにリダイレクトできます。
os.system(cmd + "> /dev/null 2>&1")
stderrとstdoutをリダイレクトします。
Pythonプログラムで起動するコンソールを完全に排除する場合は、.pyw拡張子で保存できます。
しかし、私は質問を誤解しているかもしれません。
所属していません StackOverflow