65

私は、約 50 の個別の一時ファイルを作成する必要がある Python スクリプトに取り組んでいます。これらはすべて、スクリプトの過程で頻繁に追加され、最後にマージされます。モジュールが必要なことを実行できると確信していtempfileますが、ドキュメントを読んでも方法を理解できませんでした。

変数ではなく、一時ファイルを使用してシステム メモリを節約したいと考えています。これらのデータ チャンクは、スクリプトが他の何万ものファイルを処理するにつれて大きくなるからです。

次のコードのチャンクは、一時的でないディレクトリにこれらのファイルを (一時的に) 作成するために現在使用しているハックです。

item = (string from another file)   # string must id file for future use
tmpfile = 'tmpfiles/' + item
if item not in totalitems:
   totalitems.add(item)
   with open(tmpfile, 'w') as itemfile:
      output = some stuff
      tmpfile.write(output)
else:
   with open(tmpfile, 'a') as itemfile:
      output = different stuff
      tmpfile.write(output)

必要なのは だと思いますtempfile.NamedTemporaryFile()ドキュメントによると:

その名前は、ファイル オブジェクトの名前メンバーから取得できます。

残念ながら意味がわかりません。処理中のファイルで対応する「アイテム」に再び遭遇したときに、後で各ファイルを再度呼び出すことができるようにする必要があります。これはかなり簡単だと思います。私はただ密集しているだけです。念のため、このスクリプトには Python 2.7.1 と 3.2.3 の両方のバージョンがあります。どちらかが機能するだけで本当に必要です。私は学習演習として両方を作成しました。

4

1 に答える 1

72

「その名前は、ファイル オブジェクトの名前メンバーから取得できます。」

次のように作成された一時ファイルの名前を取得できることを意味します。

In [4]: import tempfile

In [5]: tf = tempfile.NamedTemporaryFile()  
In [6]: tf.name  # retrieve the name of the temp file just created
Out[6]: 'c:\\blabla\\locals~1\\temp\\tmptecp3i'

: デフォルトでは、ファイルを閉じるとファイルが削除されます。ただし、deleteパラメータが False の場合、ファイルは自動的に削除されません。詳細については、これに関するPython ドキュメントを参照してください。

作成したい 50 個の一時ファイルのそれぞれの名前を取得できるので、(あなたが言うように) 後で再び使用する前に、たとえばリストに保存することができます。ファイルを閉じるときにファイルが消えないように、それに応じて値を設定してdeleteください (閉じて後で再度開く場合)。

ここで一時的なファイル名を作成する方法について詳しく説明しました Pythonでランダムなファイル名を生成する最良の方法

于 2012-06-15T01:03:02.717 に答える