1. ホーム
  2. python

[解決済み] Pythonです。os.systemを実行した後にstdoutを取得するには?重複

2022-08-03 23:15:45

質問

を取得したい。 stdout を実行した後、変数に os.system の呼び出しを実行した後に

この行を例にとって説明します。

batcmd="dir"
result = os.system(batcmd)

result にはエラーコード( stderr 0 Windows では 1 はlinuxの場合)。

どうすれば stdout を取得するにはどうしたらよいでしょうか?

どのように解決するのですか?

もし、あなたが必要なのは stdout の出力だけが必要な場合は subprocess.check_output() :

import subprocess

batcmd="dir"
result = subprocess.check_output(batcmd, shell=True)

というのも、あなたが使っていた os.system() を使っているので shell=True を設定しなければなりません。ただし セキュリティに関する懸念 を考慮する必要があります。

をキャプチャする必要がある場合 stderr も取り込む必要がある場合は、単に stderr=subprocess.STDOUT を呼び出すだけです。

result = subprocess.check_output([batcmd], stderr=subprocess.STDOUT)

で、エラー出力をデフォルトの出力ストリームにリダイレクトします。

出力がテキストであることが分かっている場合は、エラー出力に text=True を追加して、返されたバイトの値をプラットフォームのデフォルトエンコードで デコードするようにします。 encoding="..." を使用します。このコーデックが受信したデータに対して適切でない場合は、代わりに