zoukankan      html  css  js  c++  java
  • 问题25:如何使用临时文件

    问题25:如何使用临时文件

     

    临时文件功能:存储临时数据到磁盘上;

    临时文件特点:不用命名,关闭后悔自动被删除;

    案例:

      某项目中,我们从传感器采集数据,每收集到1G数据后,做数据分析,最终只保存分析结果。这样会产生很大的临时数据,如果这些临时数据常驻内存,将消耗大量内存资源,我们可以使用临时文件存储这些临时数据(进行外部存储,如存到磁盘上)。

    Python中使用临时文件:

    1)方法:使用标准库tempfile模块下的TemporaryFile、NamedTemporaryFile对象,创建临时文件;

    2)TemporaryFile和NamedTemporaryFile的区别:NamedTemporaryFile会创建一个带名字的临时文件,TemporaryFile创建的临时文件不带名字;

    3)TemporaryFile创建的临时文件,不能通过系统的文件路径找到;只能通过文件对象来访问它;

    4)

    二、创建临时文件

     1)用TemporaryFile创建临时文件

      格式:TemporaryFile(mode = 'w+b', bufsize = '', suffix = '', prefix = 'tmp', dir = None, delete = True)

       #mode:默认‘wb’权限;

       #delete = True:默认为True,也就是说关闭文件时将其删除;可以定义delete = False,这样临时文件关闭时不会被删除;

       #创建临时文件,并返回一个文件对象,此临时文件只能通过返回的文件对象f进行访问,不能通过系统文件路径访问;因此它只能通过当前进程进行访问;

    复制代码
    from temfile imort TemporaryFile, NamedTemporaryFile
    
    #创建临时文件,并返回一个文件对象,此临时文件只能通过返回的文件对象f进行访问,不能通过系统文件路径访问;
    f = TemporaryFile()
    
    #将临时数据写入临时文件
    f.write('abcdefg' * 10000)
    
    #访问临时数据
    #将文件指针移到开始
    f.seek(0)
    
    #读取临时文件的前n字节
    f.read(n)
    复制代码

     2)用NamedTemporaryFile创建临时文件

      格式: NamedTemporaryFile(mode='wb', bufsize=-1, suffix='', prefix='tmp', dir=None, delete=True)

       #mode:默认‘wb’权限;

       #delete = True:默认为True,也就是说关闭文件时将其删除;可以定义delete = False,这样临时文件关闭时不会被删除;

       #创建临时文件时,不直接是文件对象;

       #有NamedTemporaryFile创建的临时文件有名字和文件路径,因此它可以被多个进程同时访问;

    复制代码
    from tempfile import TemporaryFile, NamedTemporaryFile
    
    ntf = NamedTemporaryFile()
    #NamedTemporaryFile(mode='wb', bufsize=-1, suffix='', prefix='tmp', dir=None, delete=True)
    #ntf的属性:ntf.close、ntf.delete、ntf.name、ntf.close_called、ntf.file、ntf.unlink
    
    #ntf的name属性,也就是临时文件在文件系统下的文件路径,其中文件名字为:tmpgpaunlqa
    #可以通过访问ntf的name属性,来访问该临时文件
    print(ntf.name)
    #输出:C:UsersADMINI~1AppDataLocalTemp	mpgpaunlqa
  • 相关阅读:
    SpringMVC+Spring+Mybatis框架集成
    Mybatis学习总结(三)——SqlMapConfig.xml全局配置文件解析
    Mybatis学习总结(二)——Mapper代理开发
    Mybatis学习总结(一)——入门基础
    Mybatis学习总结(九)——查询缓存
    Mybatis学习总结(八)——延迟加载
    1016 部分A+B (15分)
    1015 德才论 (25分)*
    1014 福尔摩斯的约会 (20分)
    1013 数素数 (20分)
  • 原文地址:https://www.cnblogs.com/valorchang/p/11434477.html
Copyright © 2011-2022 走看看