Pythonで一時ファイルを作成・管理する方法!初心者でもわかるtempfileモジュール入門
生徒
「Pythonでファイルを一時的に使いたいとき、どんな方法がありますか?あとで消えてほしいんですけど…」
先生
「そういうときはtempfile(テンポラリファイル)モジュールを使うと便利ですよ。一時的なファイルやフォルダを作って、自動で削除もできます。」
生徒
「使い終わったら勝手に消えてくれるんですか?それは便利ですね!」
先生
「そうです。では初心者にもわかりやすく、一時ファイルの作成方法を丁寧に解説していきましょう。」
1. tempfileモジュールとは?
tempfileモジュールは、Pythonで一時的に使うファイルやフォルダを簡単に作成できる標準モジュールです。一時ファイルとは、プログラムの途中でデータを一時的に保存したいときに使われるファイルで、使い終わったら削除されるのが特徴です。
例えば、メールに添付するファイルを一時的に生成したいときや、大量のデータを一時的に保存しておく場面などで活躍します。
2. Pythonで一時ファイルを作る基本の書き方
一時ファイルを作るには、NamedTemporaryFileという関数を使います。名前付きの一時ファイルを作って、自動で消してくれます。
import tempfile
with tempfile.NamedTemporaryFile(mode='w+', delete=True) as tmp:
tmp.write('一時ファイルに書き込みました')
tmp.seek(0)
print(tmp.read())
with文で使うことで、ブロックを抜けたときに自動で削除されます。mode='w+'は読み書き両方を意味し、seek(0)で読み出し位置を先頭に戻しています。
3. 一時ファイルの名前を確認する方法
一時ファイルにはシステムが自動で名前を付けますが、その名前を確認することもできます。
import tempfile
with tempfile.NamedTemporaryFile(delete=False) as tmp:
print('ファイル名:', tmp.name)
tmp.nameを使うと、作られた一時ファイルのパス(場所と名前)がわかります。delete=Falseとすると、終了後もファイルが残ります。
4. 一時フォルダを作るには?TemporaryDirectoryの使い方
TemporaryDirectoryは、一時的なフォルダ(ディレクトリ)を作成するための関数です。フォルダの中に複数のファイルを保存したいときに使えます。
import tempfile
import os
with tempfile.TemporaryDirectory() as tmpdir:
print('一時フォルダ:', tmpdir)
filepath = os.path.join(tmpdir, 'sample.txt')
with open(filepath, 'w') as f:
f.write('一時フォルダ内のファイルです')
このように、TemporaryDirectoryを使えば、フォルダごと自動で削除されるのでとても便利です。
5. tempfileモジュールが使われる具体例
プログラミング初心者の方にもイメージしやすいよう、tempfileモジュールの活用例をいくつか紹介します。
- 画像やCSVファイルを一時的に保存して、あとでメール添付やクラウド保存する
- ファイルを受け取って中身だけ一時的に処理し、保存せずに削除する
- 複数のファイルを一時フォルダにまとめて操作する
パソコンを触ったことがない人でも、これらは実際の現場でとても役立つ場面です。
6. 一時ファイルと通常ファイルの違い
通常のファイルは、自分で名前を決めて保存先も指定する必要がありますが、一時ファイルはPythonが勝手に名前も場所も決めてくれます。そして、使い終わったら自動的に削除されるのが大きな違いです。
ゴミ箱に捨てる手間もなく、安全に一時的な作業を進められるのがtempfileモジュールの魅力です。
7. WindowsとMac/Linuxでの違いは?
tempfileモジュールは、OS(オペレーティングシステム)によって一時ファイルの保存場所が異なりますが、Pythonが自動で最適な場所を選んでくれるため、気にせず使えます。
たとえば、WindowsならC:\Users\ユーザー名\AppData\Local\Tempなどに保存され、MacやLinuxなら/tmpフォルダが使われます。
8. tempfileモジュール使用時の注意点
便利なtempfileですが、以下の点には注意しましょう。
- 大量に一時ファイルを作ると、ディスク容量を使ってしまうことがある
- delete=Falseにした場合、ファイルは自動削除されないので手動で消す必要がある
- ファイルの権限やアクセス制限によっては、作成に失敗することもある
とはいえ、with文を正しく使えば基本的に問題なく使えます。
9. tempfileで作ったファイルの中身を確認する方法
一時ファイルに書き込んだ内容を確認するには、通常のファイルと同じようにread()やprint()で確認できます。
import tempfile
with tempfile.NamedTemporaryFile(mode='w+', encoding='utf-8') as tmp:
tmp.write('確認用のデータ')
tmp.seek(0)
print('中身:', tmp.read())
一時ファイルであっても、使い方は普通のファイルとほとんど同じです。