私はPythonパッケージcdoを使用しています。これは、中間結果を格納するために大きくtempfileに依存しています。作成されたテンポラリファイルはかなり大きく、大きな計算を実行すると、/tmp
ディレクトリがいっぱいになり、スクリプトが失敗したdisk full
エラー(私たちは10〜100sのGBについて話している)に遭遇しました。私はローカルフォルダを作成することで、問題の回避策を見つけた、$HOME/tmp
を言うし、その後cdo
モジュールをインポートする前にスクリプト評価中に一時ファイルを削除する
import tempfile
tempfile.tempdir='$HOME/tmp'
を行います。これは私にとっては効果的ですが、他の人にもスクリプトを使用してもらいたい場合は、やや面倒です。したがって、たとえば、tmpfile
に定期的にすべてのテンポラリファイルをクリアするように伝えるなど、問題を解決するより洗練された方法があるかどうか、私は疑問を抱いていました(通常これはスクリプトが終了した時点でのみ行われます)。私の側からは、これは可能です。長いループを実行しているため、それぞれの反復ごとに1つの名前付きファイルが作成され、その反復中に作成されたすべての一時ファイルはその後破棄されます。 examplesショーとして
https://stackoverflow.com/questions/21257782/how-to-remove-file-when-program-exitsで説明されているtempfileモジュールを使用するだけです。ファイルが閉じられると、一時ファイルが自動的に削除されます。 – MeterLongCat
@MeterLongCat質問に書かれているように、cdoは 'tempfile'を使います。スクリプトが終了する前に*を削除する必要があります。残念ながら、私はcdoが作成時に 'TemporaryFile()'インスタンスに渡すパラメータを制御できません。 –