【Python3】一時ファイル・フォルダを作成する方法

おはこんばんにちは、せなです。

今回はPythonで一時ファイルとフォルダを作成する方法について説明したいと思います。

ソースコード

一時ファイルの作成にはtempfileを使用します。
詳しい説明については後述します。
まずは、コードをご覧ください。

import os
import tempfile
with tempfile.TemporaryDirectory() as tmpdirname:
    tmpfile = os.path.join(tmpdirname, 'tmpfile')
    with open(tmpfile, 'w') as f:
        f.write('dummy')

tempfile.TemporaryDirectory()で一時フォルダを作成し、そのディレクトリ内にファイルを作成しています。

tempfileについて

格納先の確認

tempfileを使用した際の格納先はgettempdir()で確認ができます。
(大抵は/tmpに格納されているはずです。)

tempfile.gettempdir()

フォルダの作成

先述のコードでも使用していますが、TemporaryDirectory()を使用することでフォルダを作成することができます。
生成したオブジェクトがcloseされるとフォルダごと削除されます。

tempfile.TemporaryDirectory()

フォルダの作成(手動削除)

mkdtemp()はTemporaryDirectory()と違い手動で削除する必要があります。

tempfile.mkdtemp()

返却値は生成されたディレクトリパスとなります。

tmpdirname = tempfile.mkdtemp()

ファイルの作成(ファイル名なし)

一時的な記憶領域として使用可能な  file-like object が返却されます。
TemporaryDirectory()と同様にcloseされるとファイルが削除されます。

tempfile.TemporaryFile()

ファイルの作成(ファイル名あり)

こちらも同様に file-like object が返却されます。
TemporaryFile()とはファイル名の有無以外に大きな違いはありません。
状況に応じて使い分けましょう。

tempfile.NamedTemporaryFile()

ファイルの作成(手動削除)

先述までのファイル作成はcloseすることで自動削除されていましたが、
mkstemp()は手動で削除する必要があります。

tempfile.mkstemp()

返却値には記述子とファイルの絶対パスが返却されます。

fd, filedirname = tempfile.mkstemp()

Python

Posted by sena