Pythonのtempfileモジュールで一時ファイル・一時ディレクトリを作成する方法
Pythonの標準ライブラリに含まれるtempfileモジュールは、一時ファイルや一時ディレクトリを簡単に作成するための関数群を提供しています。作成されるファイルやディレクトリは、OSのファイルシステムによって定義された特別なテンポラリディレクトリ内に配置されます。たとえばWindowsではユーザープロファイル内の AppData/Local/Temp フォルダが該当し、Linuxでは /tmp ディレクトリが一時ファイルの保存先となります。
ここでは、tempfileモジュールで利用できる主要な関数を順番に見ていきましょう。
TemporaryFile()
この関数はテンポラリディレクトリ内に一時ファイルを作成し、組み込みの open() 関数と同じようなファイルオブジェクトを返します。デフォルトでは wb+ モードで開かれるため、バイナリデータの読み書きが同時に行えます。最大の特徴は、ファイルオブジェクトを close() で閉じた瞬間に、テンポラリフォルダ上のファイルが自動的に削除される点です。
>>> import tempfile
>>> f = tempfile.TemporaryFile()
>>> f.write(b'Welcome to TutorialsPoint')
>>> import os
>>> f.seek(os.SEEK_SET)
>>> f.read()
b'Welcome to TutorialsPoint'
>>> f.close()
次の例では、mode 引数に 'w+' を指定して、バイナリではなくテキストデータとして書き込みと読み出しを行っています。
>>> ff = tempfile.TemporaryFile(mode = 'w+')
>>> ff.write('hello world')
>>> ff.seek(0)
>>> ff.read()
'hello world'
>>> ff.close()
NamedTemporaryFile()
この関数の動作は TemporaryFile() とほぼ同じですが、ランダムなファイル名を持つ実際のファイルがOSのテンポラリフォルダ内に作成される点が異なります。ファイル名は、返されたファイルオブジェクトの name 属性から取得できます。こちらのファイルも、close() を呼ぶと即座に削除されます。
>>> fo = tempfile.NamedTemporaryFile()
>>> fo.name
'C:\\Users\\acer\\AppData\\Local\\Temp\\tmpipreok8q'
>>> fo.close()
TemporaryDirectory()
この関数は一時ディレクトリを作成します。dir パラメータを指定すれば、作成場所を自由に選択できます。以下のコードは C:\python36 フォルダ内に一時ディレクトリを生成します。
>>> f = tempfile.TemporaryDirectory(dir = "C:/python36")
<TemporaryDirectory 'C:/python36\ tmp9wrjtxc_'>
作成されたディレクトリは指定したフォルダ内に現れます。不要になったら、ディレクトリオブジェクトに対して cleanup() メソッドを呼び出すことで削除できます。
>>> f.name
'C:/python36\\tmp9wrjtxc_'
>>> f.cleanup()
mkstemp()
この関数も TemporaryFile() と同様に一時ファイルを作成しますが、suffix(拡張子)や prefix(接頭辞)パラメータを使ってファイル名をカスタマイズできる点が大きな違いです。ただし、TemporaryFile() とは異なり、作成されたファイルは自動的に削除されません。不要になったファイルは手動で削除する必要があります。
>>> f = tempfile.mkstemp(suffix = '.tp')
C:\Users\acer\AppData\Local\Temp\tmpbljk6ku8.tp
mkdtemp()
この関数はOSのテンポラリフォルダ内に一時ディレクトリを作成し、その絶対パスを文字列として返します。dir パラメータを指定すれば、作成場所を明示的に決めることも可能です。こちらも自動削除は行われない点に注意してください。
>>> tempfile.mkdtemp(dir = "c:/python36")
'c:/python36\\tmpruxmm66u'
gettempdir()
この関数は、一時ファイルの保存先となるデフォルトのディレクトリ名を返します。通常、この値は環境変数などから取得されます。Windowsではユーザーの AppData/Local/Temp、Windowsディレクトリ配下の temp、あるいはシステムドライブ直下の temp のいずれかであり、Linuxでは一般に /tmp です。このディレクトリは、前述の各関数における dir パラメータのデフォルト値として使われます。
>>> tempfile.gettempdir()
'C:\\Users\\acer\\AppData\\Local\\Temp'
本記事では、Pythonのtempfileモジュールで利用できる主要な関数を解説しました。自動削除の有無やファイル名のカスタマイズ可否といった違いを理解し、用途に応じて適切な関数を使い分けることが、安全かつ効率的な一時ファイル操作のポイントです。
-
Pythonでディレクトリとファイルを一覧表示する方法を徹底解説
Pythonには、指定したパス内のファイルやディレクトリを一覧表示するための方法がいくつかあります。この記事では、osモジュールを使った基本的な方法から、条件に応じた絞り込み、再帰的な探索まで、実用的なテクニックをわかりやすく解説します。 os.listdir()でファイルとディレクトリの一覧を取得する 特定のパスにあるすべてのファイルやディレクトリを取得する最も簡単な方法のひとつが、os.listdir()メソッドを使うことです。 import os for x in os.listdir(.): print(x) 実行結果 .pytest_cache 4forces.json
-
PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】
Pythonには、Excelファイル(.xlsx)を操作するためのopenpyxlという便利なモジュールが用意されています。このモジュールを使えば、Excelファイルの新規作成、データの書き込み・読み取り、シートの追加や管理など、さまざまな操作をプログラムから自動的に行うことができます。 本記事では、openpyxlの基本的な使い方を、実際に動作するサンプルコードとともに順番に解説していきます。 openpyxlのインストール方法 openpyxlは標準ライブラリではないため、まずインストールが必要です。コマンドプロンプト(またはターミナル)で以下のコマンドを実行してください。 pip ins