tempfileモジュール
前回、Pythonでの~(チルダ)の意味(論理演算子not)を紹介しました。
今回は一時ファイルを作成するためのモジュール「tempfile」を紹介します。
あまり一時ファイルを作成する必要性に迫られたことはないのですが、とりあえず知っておけば何かの役に立つかなと。
それでは始めていきましょう。
デフォルトの一時ファイルの場所
Pythonで一時ファイルを作成する場合、デフォルトではシステムが指定した場所に一時ファイルが作成されます。
その場所を確認するには、「tempfile.gettempdir()」を使います。
import tempfile
print(tempfile.gettempdir())
実行結果
/var/folders/sp/hg7p80kx22s7vct7yb0zl5cm0000gn/T
不可視の一時ファイルの作成方法:tempfile.TemporaryFile()
tempfileモジュールで一時ファイルを作成する場合、不可視のファイルとして作成する方法と可視のファイルとして作成する方法があります。
不可視のファイルとして作成する場合は「tempfile.TemporaryFile()」を使います。
そして書き込む場合は「.write」を使いますが、書き込む文字は「b”書き込む文字”」というようにバイト文字で書き込みます。
import tempfile
with tempfile.TemporaryFile() as tf:
tf.write(b"tempfile write")
実行結果
このままでは実行結果が何も表示されません。
一時ファイルに書き込んだ文字を表示するには、まず「seek(0)」として書き込んでいるカーソルの位置を先頭に移動させます。
そして「.read()」とすると書き込んだ文字を取得することができます。
import tempfile
with tempfile.TemporaryFile() as tf:
tf.write(b"tempfile write")
tf.seek(0)
print(tf.read())
実行結果
b'tempfile write'
「tempfile.TemporaryFile()」のオプションに「dir=”保存先のディレクトリパス”」を追加するとその場所に一時ファイルを作成できます。
ただ不可視のファイルだと本当に保存されたのか分かりません。
不可視の一時ファイルの作成方法:tempfile.NamedTemporaryFile()
ということで可視の一時ファイルの作成方を見てみましょう。
可視の場合は「tempfile.NamedTemporaryFile()」を使用します。
そして作成したファイルパスは「.name」で取得することができます。
import tempfile
with tempfile.NamedTemporaryFile(dir=".") as tf:
print(tf.name)
tf.write(b"tempfile write")
tf.seek(0)
print(tf.read())
実行結果
/ファイルパス/tmpgygobimb
b'tempfile write'
一時ディレクトリの作成方法
tempfileモジュールでは一時ファイルだけでなく、一時ディレクトリを作成することもできます。
その場合は「tempfile.TemporaryDirectory()」を使用します。
先ほどの「tempfile.NamedTemporaryFile()」と合わせるとこんな感じで使います。
import tempfile
with tempfile.TemporaryDirectory(dir=".") as td:
with tempfile.NamedTemporaryFile(dir=td) as tf:
tf.write(b"tempfile write")
tf.seek(0)
print(tf.read())
実行結果
b'tempfile write'
とりあえず一時ファイル、一時ディレクトリの作成方法を学んでみましたが、どんな場面で使えばいいのかよく分かりません。
また使うことがあれば、もう一度勉強してみようと思っています。
次回はJoblibライブラリを使って簡単な並列処理をする方法を紹介します。
ではでは今回はこんな感じで。
コメント