9

通常、Pythonでstdoutを変更するには、の値を変更しますsys.stdout。ただし、これはprintステートメントにのみ影響するようです。os.system()それで、 Pythonのコマンドを介して実行されるプログラムの(コンソールへの)出力を抑制する方法はありますか?

4

4 に答える 4

26

UNIX システムでは、コマンド自体の一部として stderr および stdout を /dev/null にリダイレクトできます。

os.system(cmd + "> /dev/null 2>&1")
于 2010-07-07T18:07:38.450 に答える
18

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 サブプロセス モジュール

于 2010-07-07T18:09:39.383 に答える
0

stderrとstdoutをリダイレクトします。

于 2010-07-07T18:02:11.697 に答える
0

Python プログラムで起動するコンソールを完全に削除したい場合は、.pyw 拡張子を付けて保存できます。

私は質問を誤解しているかもしれませんが。

于 2010-07-07T18:09:02.587 に答える