Tempfile用於創建臨時文件和目錄,在某些場景中可能會用到。
模塊提供了4個高級接口:
- TemporaryFile,創建臨時文件,使用完畢自動清理
- NamedTemporaryFile,確保該臨時文件在文件系統中具有可見的名稱,且通過設置delete=False可以保存文件
- SpooledTemporaryFile,數據緩存在內存中直到超過max_size再落地
- TemporaryDirectory,創建臨時文件夾,使用完畢自動清理
和2個低級接口:
- mkstemp,創建臨時文件
- mkdtemp,創建臨時文件夾
一般情況下用高級接口即可。低級接口需要自己手動清理文件。
demo如下:
通過tempfile.tempdir決定本模塊所有函數的 dir 參數的默認值,即臨時文件/文件夾的創建路徑。
suffix可以指定文件名後綴結尾,prefix指定文件名前綴開頭。
import tempfile
from pathlib import Path
def main():
# 創建臨時文件
with tempfile.NamedTemporaryFile(delete=False) as fp:
print(fp.name)
fp.write(b'Hello world!')
fp.seek(0)
print(fp.read())
# 創建臨時文件夾
with tempfile.TemporaryDirectory(suffix=".txt", prefix='temp') as tmpdir:
print('created temporary directory', tmpdir)
if __name__ == '__main__':
p = Path('.')
p1 = p / "tmp"
p1.mkdir(exist_ok=True)
tempfile.tempdir = p1 # 設置全局的dir
main()
效果: