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
  • 相关阅读:
    LeetCode OJ 112. Path Sum
    LeetCode OJ 226. Invert Binary Tree
    LeetCode OJ 100. Same Tree
    LeetCode OJ 104. Maximum Depth of Binary Tree
    LeetCode OJ 111. Minimum Depth of Binary Tree
    LeetCode OJ 110. Balanced Binary Tree
    apache-jmeter-3.1的简单压力测试使用方法(下载和安装)
    JMeter入门教程
    CentOS6(CentOS7)设置静态IP 并且 能够上网
    分享好文:分享我在阿里8年,是如何一步一步走向架构师的
  • 原文地址:https://www.cnblogs.com/valorchang/p/11434477.html
Copyright © 2011-2022 走看看