Python生成临时文件和文件夹的几种方法

 更新时间:2026年03月10日 09:15:34   作者:mahuifa  
这篇文章主要介绍了在Python中生成临时文件和临时文件夹的方法,包括使用tempfile模块中的不同函数,以及推荐的做法,需要的朋友可以参考下

1 python生成临时文件

在Python中生成临时文件并在程序退出时自动删除,有以下几种方法:

使用 tempfile.NamedTemporaryFile

这是最常用的方法,可以自动管理临时文件的创建和删除:

import tempfile
import os

# 创建临时文件,程序退出时自动删除
with tempfile.NamedTemporaryFile(delete=True) as temp_file:
    print(f"临时文件路径: {temp_file.name}")
    # 写入数据
    temp_file.write(b"Hello, temporary file!")
    temp_file.flush()  # 确保数据写入磁盘
    
    # 文件在with块结束时自动删除

使用 tempfile.TemporaryDirectory

如果需要临时目录及其内容自动清理:

import tempfile
import os

# 创建临时目录,程序退出时自动删除
with tempfile.TemporaryDirectory() as temp_dir:
    temp_file_path = os.path.join(temp_dir, "test.txt")
    with open(temp_file_path, "w") as f:
        f.write("Hello, temporary directory!")
    print(f"临时目录: {temp_dir}")
    # 目录和其中的文件在with块结束时自动删除

手动注册退出处理函数

如果需要更多控制权,可以手动注册清理函数:

import tempfile
import os
import atexit

# 创建临时文件
temp_file = tempfile.NamedTemporaryFile(delete=False)
temp_file_path = temp_file.name
temp_file.close()  # 关闭文件以便后续操作

# 注册退出时的清理函数
def cleanup_temp_file():
    if os.path.exists(temp_file_path):
        os.unlink(temp_file_path)
        print(f"已删除临时文件: {temp_file_path}")

atexit.register(cleanup_temp_file)

# 使用临时文件
with open(temp_file_path, "w") as f:
    f.write("Hello, manual cleanup!")

print(f"临时文件路径: {temp_file_path}")

使用 tempfile.mkstemp

创建临时文件并获得文件描述符:

import tempfile
import os

# 创建临时文件
fd, temp_path = tempfile.mkstemp()
try:
    print(f"临时文件路径: {temp_path}")
    # 使用文件描述符写入数据
    os.write(fd, b"Hello, mkstemp!")
finally:
    os.close(fd)  # 关闭文件描述符
    
# 手动删除文件
os.unlink(temp_path)

推荐做法

对于大多数情况,推荐使用 tempfile.NamedTemporaryFile 配合 with 语句,因为:

  • 自动管理生命周期
  • 代码简洁易读
  • 保证资源正确释放
  • 支持 delete=True 参数确保自动删除
import tempfile

# 最佳实践示例
with tempfile.NamedTemporaryFile(suffix='.txt', prefix='temp_', delete=True) as f:
    f.write(b"临时数据")
    f.flush()
    # 文件路径: f.name
    # 文件会在with块结束时自动删除

2 python生成临时文件夹

  • 生成临时文件夹,在程序退出时自动删除;
def get_temp_dir() -> str:
    return os.path.join(get_main_dir(), TEMP_DIR)


def cleanup():
    temp_dir = get_temp_dir()
    if os.path.exists(temp_dir):
        shutil.rmtree(temp_dir)
        

temp_dir = get_temp_dir()
os.makedirs(temp_dir,  exist_ok=True)
#将 cleanup 函数注册为程序退出时要执行的函数
atexit.register(cleanup)

到此这篇关于Python生成临时文件和文件夹的几种方法的文章就介绍到这了,更多相关Python生成临时文件和文件夹内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中类的属性和方法介绍

    python中类的属性和方法介绍

    在本篇内容里小编给大家整理了关于python中类的属性知识点以及使用方法介绍,需要的朋友们参考下。
    2018-11-11
  • 如何利用python实现词频统计功能

    如何利用python实现词频统计功能

    词频统计用途很广泛,比如我们统计某篇文章中的用词频率,网络热点词汇,再比如起名排行榜呀、热门旅游景点排行榜呀什么的,其实也都可以套用,这篇文章主要给大家介绍了关于如何利用python实现词频统计功能的相关资料,需要的朋友可以参考下
    2021-10-10
  • python转换摩斯密码示例

    python转换摩斯密码示例

    这篇文章主要介绍了python转换摩斯密码的示例,需要的朋友可以参考下
    2014-02-02
  • Pycharm最新激活码2019(推荐)

    Pycharm最新激活码2019(推荐)

    这篇文章主要介绍了Pycharm最新激活码2019,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Python参数、参数类型、位置参数、默认参数、可选参数举例详解

    Python参数、参数类型、位置参数、默认参数、可选参数举例详解

    这篇文章主要介绍了Python 3.13中函数参数的不同类型,包括位置参数、默认值参数、可变参数、关键字参数、命名关键字参数以及它们的组合使用规则,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • Python中标准模块importlib详解

    Python中标准模块importlib详解

    这篇文章主要给大家详细介绍了Python中标准模块importlib的使用方法和示例,非常简单,有需要的小伙伴可以参考下
    2017-04-04
  • Python中itertools模块的使用教程详解

    Python中itertools模块的使用教程详解

    itertools是python内置的模块,使用简单且功能强大。本文将详细为大家讲解一下itertools模块的使用方法,感兴趣的小伙伴可以学习一下
    2022-05-05
  • python中pygame模块用法实例

    python中pygame模块用法实例

    这篇文章主要介绍了python中pygame模块用法实例,通过图形绘制来简单讲述了pygame模块的用法,具有很好的参考借鉴价值,需要的朋友可以参考下
    2014-10-10
  • Python应用库大全总结

    Python应用库大全总结

    本篇文章给大家分享了Python应用库大全的相关内容,对此有需要的可以学习下。
    2018-05-05
  • python循环定时中断执行某一段程序的实例

    python循环定时中断执行某一段程序的实例

    今天小编就为大家分享一篇python循环定时中断执行某一段程序的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06

最新评论