tempfile.NamedTemporaryFileを使う
>>> import tempfile >>> f = tempfile.NamedTemporaryFile(mode='w+') >>> f.name '/var/folders/6z/xq_8ddx97hq9hzlgwzjjdjbw0000gn/T/tmpncbwgf4y' >>> f.write('こんにちは') 5 >>> f.seek(0) 0 >>> f.read() 'こんにちは'
一時ファイルの削除
>>> import os >>> os.remove(f.name) >>> os.path.exists(f.name) False
withを使ってブロック形式で書けば自動で一時ファイルが削除される
>>> with tempfile.NamedTemporaryFile(mode='w+') as f: ... print(f.name) ... f.write('こんにちは') ... f.seek(0) ... print(f.read()) ... /var/folders/6z/xq_8ddx97hq9hzlgwzjjdjbw0000gn/T/tmp2sxgdmb_ 5 0 こんにちは >>> import os >>> os.path.exists(f.name) False
- f.seek(0)しないとf.read()ができない
- tempfile.TemporaryFileでも一応出来たが絶対パスが取れない(f.nameがない)のでやめた
- デフォルトのmodeがバイナリ形式なので注意(mode='w+'を指定する