私はPythonのサブプロセスモジュールで遊んでいましたが、いくつかの例を試しましたが、heredoc文を動作させることはできません。ここでheredocsを使用したPythonサブプロセス
は私が遊んでいた簡単な例である:私は上記のコードを実行したときに
import subprocess
a = "A String of Text"
p = subprocess.Popen(["cat", "<<DATA\n" + a + "\nDATA"])
私は次のエラーを取得する:
cat: <<DATA\nA String of Text\nDATA: No such file or directory
私はそれが間違っているのだろうか?これも可能ですか?もしそうなら、私はそれをどうやってやりますか?
更新
ちょうどこれを行うのより良い方法があるので、これは本当のPythonプログラムで実行してはならないことを言いたかったです。
私はShellパラメータが何をしたのか分かりませんでした。ドキュメントでは、trueに設定した場合の動作を説明しますが、falseに設定した場合はそれほど多くはありません。 – MitMaro
'shell'パラメタが' False'のとき、 'subprocess'モジュールはあなたが指定したプログラム('/bin/cat')を 'Popen()'の呼び出しで指定された引数で直接実行します。 。リダイレクションやパイプなどのシェル文字の解釈が行われていない場合、プログラムは送信する内容を正確に把握します。これは 'cat'が' << DATA'で始まる名前のファイルを見つけることができなかったという理由です。 –
説明をいただき、ありがとうございました。 – MitMaro