Linuxのbashシェルでは、コマンドを(ファイルから)読み込み、コマンドを実行してすべての出力、エラー、およびリターンコードをファイル。私は窓でPythonを使用してそれを行うことができます。すべての出力とエラーをキャプチャし、WindowsのコマンドをPythonで警告する
0
A
答えて
0
もちろん可能です。これを行うには多くの方法があります。
各行にコマンドを含むcommands
という名前のテキストファイルがあるとします。
subprocess
- が
- 入力ファイルを開く:あなたはこのような何かを行うことができます
- コマンドが成功した場合は戻りコードを0に設定し、そうでない場合はスローされた例外から戻りコードを取得します。
- あなたが使用したいと思うでしょう
をファイルにリターンコードと出力を書き込む: https://docs.python.org/2/library/subprocess.html または https://docs.python.org/3/library/subprocess.html
例えば:
import shlex
import subprocess
with open('commands.txt') as fin:
for command in fin:
try:
proc = subprocess.Popen(
shlex.split(command),
stderr=subprocess.STDOUT,
stdout=subprocess.PIPE
)
returncode = 0
output = proc.communicate()[0]
except subprocess.CalledProcessError as e:
returncode = e.returncode
output = e.output
with open('output.txt', 'w') as fout:
fout.write('{}, {}'.format(returncode, output))
+0
Windowsで 'shlex.split'を使うことはお勧めしません。これは、POSIXシェル用のコマンドラインを分割するためのものです。すでにコマンドラインがある場合は、Windowsで直接コマンドラインを渡すことができます。それをリストに分割する必要はありません。 'subprocess.list2cmdline'はそれをコマンドラインに再構築するだけです。 – eryksun
関連する問題
- 1. すべてのエラー警告をリダイレクトして別の場所に出力する
- 2. SeleniumとPythonの出力をキャプチャする
- 3. Pythonの警告メッセージが出力
- 4. PHPでPythonスクリプトを実行する:すべての出力をキャプチャする
- 5. すべてのファイルに「警告」や-wを付けずにPerlの警告文が出力される
- 6. xcodebuildは警告とエラーを出力しませんか?
- 7. Python slimit minimizer不要な警告出力
- 8. ZSHで出力コマンドをキャプチャしてテストする
- 9. 失敗したコマンドや警告のメッセージをキャッチするPythonスクリプト
- 10. すべてのコマンドのbash出力とエラーのリダイレクト
- 11. Webpack watchコンパイルの最後の出力メッセージ(警告とエラーの後)
- 12. Rubyからコマンドを表示して出力をキャプチャする
- 13. C# - Windowsアプリケーション出力のキャプチャ
- 14. コマンドラインですべてのコマンドと出力をキャプチャするにはどうすればよいですか?
- 15. Clang:すべての警告をエラーにすることを除いて...
- 16. Visual Studioコードのすべての警告とエラーを表示します
- 17. Python - 一度警告を表示する(すべての警告レジストリをリセットする)
- 18. リモートWindowsマシンでコマンドを実行し、Pythonで出力を取得
- 19. 私はbashコマンドの出力をキャプチャしようとしています
- 20. R Shiny:UIに出力する警告メッセージ
- 21. python3のサブプロセスからすべての出力をキャプチャする
- 22. ターミナルからのユーザー入力も必要なコマンドのすべての出力をキャプチャする方法は?
- 23. pythonでストアドプロシージャの出力をキャプチャpyodbc
- 24. Bash:コマンドの出力をキャプチャして条件付きで処理する
- 25. Pythonスクリプトの出力をWindowsスクリプトコマンドとして実行する
- 26. bootbpxの確認/警告ボックスボタンでclickイベントをキャプチャします
- 27. OpenCVで警告をコンパイルして出力しない
- 28. すべての出力をキャプチャして、execでPythonコードのブロックを実行しますか?
- 29. ターゲットのコマンドをオーバーライドしてファイルを警告します。
- 30. javaからのsshコマンド出力のキャプチャ
それだけstdout' 'への書き込みを行う場合'stderr'を使用すると、もちろん' subprocess.Popen'を使うことができます。これらの標準ファイルを 'subprocess.PIPE'に設定します。 'Popen'インスタンスの' communicate'メソッドを呼び出します。しかし、\\。\ CONOUT $ 'を開いてコンソールに直接出力する場合は、コンソールの出力を[' ReadConsoleOutput'](https://msdn.microsoft.com/en-us/)で削り取る必要があります。ライブラリ/ ms684965)。 ['OutputDebugString'](https://msdn.microsoft.com/en-us/library/aa363362)を使用してデバッグメッセージを出力することもできます。その場合は、デバッガAPIを使用してこれらのメッセージを取得する必要があります。 – eryksun
@eryksun、なぜコメント全体に答えを入れてもらえますか?あなたが書いたのは、試みられた答えです。そうすると、それを読んでいる人は混乱します。私はあなたが役に立つようにしようとしていると確信していますが、IMOはSOの有用性を低下させます。コメントにはマークダウンの書式もありません。そのため、例を含めると読みにくくなります。したがって、実際のコメントがある場合や質問を明確にする場合は、コメントフィールドを使用してください。それ以外の場合は、質問に答えてください。 –
@CoreyGoldberg、それは完全な答えを書いている誰かを助けるかもしれないちょうどコメントです。私は、私が見ているほとんどの質問に対して満足のいく回答を書いて(そして維持して)いる時間がない。だから私は役に立つと思う少しの情報を提供するか、既存の回答をフィードバックして改善する。 – eryksun