subprocess モジュールを使用して Python でシェル コマンドを実行する場合、出力をリダイレクトする方法を知ることが重要です。一般的なシナリオの 1 つは、コマンドの標準出力をファイルにリダイレクトすることです。この記事では、出力リダイレクトを実現するための Python のアプローチを検討することで、このニーズに対処します。
提供された Python コード スニペットでは、ユーザーは subprocess.call を使用して、コマンドを分割することで cat コマンドの出力をファイルにリダイレクトしようとしています。 shlex を使用して引数に組み込みます。ただし、出力は引き続きコンソールに表示されます。
Python 3.5 以降で出力を適切にリダイレクトするには、subprocess.run の stdout 引数を使用できます。この引数は、開いているファイル ハンドルを値として受け入れます。これが出力の宛先になります。以下に例を示します。
# Use a list of args instead of a string input_files = ['file1', 'file2', 'file3'] my_cmd = ['cat'] + input_files with open('myfile', "w") as outfile: subprocess.run(my_cmd, stdout=outfile)
このコードでは、実行されるコマンドは引数のリストに分割され、出力は「myfile」という名前のファイルにリダイレクトされます。 with ステートメントにより、ファイルが適切に開かれ、書き込まれ、閉じられることが保証されます。
この目的で cat などの外部コマンドを使用する必要がないことに注意してください。 Python には、ファイルの読み取りと書き込みのための組み込み関数があり、直接使用できます。
with open('myfile', "w") as outfile: outfile.write(open('file1').read()) outfile.write(open('file2').read()) outfile.write(open('file3').read())
サブプロセスで出力を適切にリダイレクトする方法を理解するか、Python のファイル処理機能を利用することで、プロセスのフローを効果的に管理できます。 Python スクリプト内の情報。
以上がPython でサブプロセスを使用して出力をリダイレクトする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。