えんじにぃーあぶろぐ

あまり長い文章は好きではないので、長い時間をかけないで読める、簡単な内容を目指すエンジニアのブログです。

一時ファイル

さて、

 

業務ではpythonを使用しているのですが、

そこで今日は久々にtempfileモジュールを使う機会がありまして、

一時ファイルを扱っていました。

 

tempfile.TemporaryDirectory()やtempfile.TemporaryFile()などですね。

 

常識事ではありますが、自分の頭の中を整理するために簡単に記載したいと思います。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

一時ファイルとは?

 

その名の通り、一時的なファイルです。

基本的には使用が終わると自動的に破棄されます。

(厳密にはプロセスが終わると、ですが。プロセスやスレッドもブログで纏めようかな)

 

一時ディレクトリなら、一時的なディレクトリで

本物のディレクトリのようにファイルを格納することができます。

こちらも一時ファイルと同じように、自動的に破棄されます。

 

f:id:ygt1qa3:20190225225531j:plain

倉庫は一時的に物を置いておく場所ですが、自動的には削除されないですね。

 

例えばpythonなら下記のように、

withブロックにいる間はtempfile(tempdirectory)が存続しています。

import tempfile
import os
from pathlib import Path

def main():
with tempfile.TemporaryDirectory() as td:
with open(Path(td) / 'test.text', 'w') as f:
for path in Path(td).iterdir():
print(path)


if __name__ == '__main__':
main()

 

pythonのwith句はわかりやすくて好きです。

C#にもusingステートメントありますが、ing付くと文字数長く感じません?

 

いっても「using」5文字じゃねぇか、本当に目が悪いやつだなぁ!?

 =====○)д`);.・;゛;ブッ 

 

 

 

 

 

 

 

 

 

 

 

 

 

 勉強しているGoでも触ってみようと思います。

あちらは自動で削除されないみたいですね。。。。

 

 

 

 

 

 

 

どこに一時ファイルは作成されるのか?

 

これはOS毎に違っております。

 

windows・・・環境変数で設定してあるフォルダ

unix系統・・・/tmpディレクト

windowsはフォルダ、unixディレクトリと呼びます。個人的にはどっちでもいいんですけどね。)

 

 

 

 

windowsではTEMPあるいはTMPの環境変数で設定してあるフォルダになります。

 

初期設定では、

C:\ユーザ\ユーザー名\AppData\Local\Temp

となっているはずです。

 

勿論、環境変数内のPATHを変更すれば、

一時ファイルの出力先も変更した場所になります。

 

ある意味、ユーザの設定に依存している形にはなりますね。

 

 

 

 

 

unix系統(maclinux)は

ルートディレクトリ直下に存在するtmpディレクト

一時ファイルの出力先になっております。

 

こちらは常に決まっているので

OSの設定に依存していますね。

 

個人的にはunix系統の方が好きですね。

いつも同じ場所にあるという感じで。

 

windowsも同じ場所にあるといえばあるのですが、

一度PATHを確認しないと確信が持てませんからね。。。

 

 

 

 

しかし、実運用上では気を付ける必要があります。

セキュリティ上の問題ですね。

常に決まった場所にあるということは、狙う場所がバレているということですから。

下記参照ください。

www.ipa.go.jp

 

 

 

 

 

 

 

 

 

 

 

 

 

 

簡単ではありますが、纏めてみました。

日々、基本的な知識が蓄積されているのがいい感じですね。