Python tempfile 临时目录、临时文件模块详解 作者:马育民 • 2026-05-14 15:28 • 阅读:10001 # 介绍 `tempfile` 是 Python 内置的**临时文件/目录处理模块**,专门用于创建**临时文件、临时目录**,无需手动管理文件删除、路径冲突,程序退出时会**自动清理**,非常安全便捷。 ### 作用 1. 创建临时文件/文件夹,用完即删 2. 自动处理跨平台路径(Windows/Linux/macOS 通用) 3. 避免手动管理文件导致的残留、权限问题 4. 适合缓存、中间数据、临时计算等场景 --- # 临时文件 `TemporaryFile()` / `NamedTemporaryFile()`:创建后 **程序关闭自动删除**。 ### 无文件名临时文件 无文件名临时文件(自动删除) ```python import tempfile with tempfile.TemporaryFile(mode='w+t') as f: f.write("这是临时数据") f.seek(0) # 回到文件开头 print(f.read()) # 读取:这是临时数据 ``` ### 带文件名的临时文件 带文件名的临时文件(更实用,可被其他进程访问) ``` import tempfile with tempfile.NamedTemporaryFile(mode='w+t', delete=True) as f: print("临时文件路径:", f.name) # 打印系统自动生成的路径 f.write("Hello tempfile") f.seek(0) print(f.read()) ``` **解释:** - `delete=True`:关闭文件 **自动删除**(默认) - `mode='w+t'`:文本模式;`'w+b'`:二进制模式 --- ### 手动控制删除的临时文件 设置 `delete=False`,文件不会自动删除,需要手动 `os.unlink()`。 ```python import tempfile import os # 创建不自动删除的临时文件 f = tempfile.NamedTemporaryFile(delete=False) print("永久临时文件路径:", f.name) f.write(b"二进制数据") f.close() # 手动删除 os.unlink(f.name) ``` --- # 临时目录 存放多个临时文件 `TemporaryDirectory()`:创建临时文件夹,退出自动删除整个目录。 ```python import tempfile import os # 创建临时目录 with tempfile.TemporaryDirectory() as tmp_dir: print("临时目录路径:", tmp_dir) # 在临时目录里创建文件 file_path = os.path.join(tmp_dir, "test.txt") with open(file_path, 'w') as f: f.write("临时目录里的文件") # 退出 with 后,目录和文件全部自动删除 ``` --- # 获取系统临时文件目录 查看当前系统默认的临时文件存放路径: ```python import tempfile # 获取系统临时目录 print(tempfile.gettempdir()) # 获取临时文件命名前缀 print(tempfile.gettempprefix()) ``` --- # 常用参数说明 | 参数 | 作用 | |------|------| | `mode` | 文件模式:`w+t`(文本) / `w+b`(二进制) | | `delete` | `True`=自动删除,`False`=保留 | | `dir` | 指定临时文件存放目录 | | `prefix` / `suffix` | 文件名前缀/后缀(如 `prefix="data_"`) | | `encoding` | 文本编码(如 `utf-8`) | 示例(自定义文件名前缀、后缀): ```python with tempfile.NamedTemporaryFile(prefix="myapp_", suffix=".log") as f: print(f.name) # 类似 /tmp/myapp_xxxx.log ``` --- # 使用建议 1. **优先用 `with` 语句**:自动关闭+自动清理,最安全 2. **跨平台无需关心路径**:`tempfile` 自动适配系统 3. **临时数据一定用临时文件**:不要手动创建文件再删,容易残留 4. **多文件用 `TemporaryDirectory`**:统一管理,整体删除 --- # 总结 1. `tempfile` 是 Python **内置模块**,无需安装 2. `NamedTemporaryFile`:创建带名字、自动删除的临时文件 3. `TemporaryDirectory`:创建临时目录 4. `with` 语句是最佳使用方式,安全无残留 5. 适合缓存、中间计算、临时数据存储等场景 原文出处:http://malaoshi.top/show_1GW3JGmPAd8W.html