1. ホーム
  2. python

[解決済み] サブプロセスの呼び出しをテキストファイルにパイプする方法は?

2022-08-30 04:15:16

質問

subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml",  "/tmp/video_xml"])

今、私はあるスクリプトを実行しています。run.shにprintsがあるので、この行を実行すると、印刷を開始します。

どのように私はまた、テキストファイルにこれをパイプするのですか?(そして、可能であれば、印刷も)。

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

出力結果をファイルに書き出したい場合は 標準出力 -の引数で指定します。 subprocess.call .

のどちらかを取ります。

  • None (デフォルトでは、stdoutは親(あなたのスクリプト)から継承されます)
  • subprocess.PIPE (1つのコマンド/プロセスから別のコマンド/プロセスへパイプすることができます)
  • ファイルオブジェクトまたはファイルディスクリプタ(出力がファイルに書き込まれるようにしたい場合)。

のようなもので、ファイルを開く必要があります。 open でファイルを開き、オブジェクトまたはファイル記述子の整数を call :

f = open("blah.txt", "w")
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml",  "/tmp/video_xml"], stdout=f)

ソケットのように、有効なファイルのようなオブジェクトなら何でも動くと思いますが、試したことはありません。

として マーコグ がコメントで触れているように、標準出力もリダイレクトしたいかもしれません。 stderr=subprocess.STDOUT . 上記のどの値も同様に機能し、異なる場所にリダイレクトすることができます。