1

コンソールとファイルシステムの両方で出力を生成する単純なコマンドラインユーティリティがあります。コンソール出力をキャプチャする方法はよく知っていますが、ファイル名を事前に知っているファイルをインターセプトする方法もわかりません。

作成されたファイルをすぐに解析して削除するため、ファイルシステムに触れることなく実行を「メモリ内」に維持したいと思います。これにより、不要なボトルネックが発生します(特に、小さなツールを何百万回も実行する必要がある場合)。

したがって、要約すると、私は次のことを達成しようとしています。

  1. Pythonのサブプロセスを使用してバイナリを実行する
  2. ツールの出力と、ツールが作成するファイルの内容の両方をキャプチャします(事前に既知の名前で現在の作業ディレクトリに)
  3. 理想的には、ファイルシステムに触れることなくすべてを実行します。
4

1 に答える 1

0

Linuxをサポートするだけでよいので、1つの可能性は名前付きパイプを使用することです。アイデアは、名前付きパイプとして出力ファイルを事前に作成し、プロセスにパイプからのツールの出力を読み取らせることです。

たとえば、名前付きパイプの概要を参照してください。

PythonAPIはos.mkfifo()です。

于 2012-11-23T15:17:31.310 に答える