本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills

  这是我的系列文章「Python实用秘技」的第12期,本系列立足于笔者日常工作中使用Python积累的心得体会,每一期为大家带来一个几分钟内就可学会的简单小技巧。

  作为系列第12期,我们即将学习的是:Python中临时文件的妙用。

  当我们用Python编写程序时,有时候需要临时存储数据且不希望占用多少内存,亦或是需要写出文件到文件系统供后续程序读取,这些情况下以创建临时文件的方式进行处理,既不会干扰本地文件系统,又安全省事。

  而通过使用Python中的标准库tempfile,我们就可以很方便的进行临时文件相关操作,其主要用法有两种:

  • 创建临时文件

  tempfile的经典用法之一是使用其TemporaryFile()配合with上下文管理器,在本地文件系统的临时文件目录下创建具有随机名称的文件,并且在with内的代码执行完成后,该临时文件会自动被销毁:

import os
import tempfile with tempfile.TemporaryFile() as f:
print(f.name)
print(os.path.exists(f.name)) print(os.path.exists(f.name))

  基于这个特性,我们可以应用到很多场景下,譬如当我们希望将表格格式的字符串转换为pandas数据框时,就可以像下面这样做:

  • 创建临时目录

  前面展示了tempfile创建临时文件的功能,而有些场景下,我们需要创建临时文件夹,这可以基于TemporaryDirectory()来实现,特性类似TemporaryFile()

  典型的应用场景是配合TemporaryDirectory()shutil生成压缩包文件:

import shutil
import zipfile
import numpy as np with tempfile.TemporaryDirectory() as p: # 模拟向当前临时目录下写出多个文件
for i in range(100):
(
pd
.DataFrame(np.random.rand(10, 3), columns=list('ABC'))
.to_csv(os.path.join(p, f'demo{i+1}.csv'), index=False)
) # 将当前临时目录转为zip压缩包
shutil.make_archive('./demo', 'zip', p) # 查看目标压缩文件内的文件
[file.filename for file in zipfile.ZipFile('demo.zip').filelist]


  本期分享结束,咱们下回见~

最新文章

  1. 记一次Url重写_发布之后iis 404
  2. hibernate 3.3.2GA版的下载
  3. 线程池大小 & cpu core
  4. C#通过安全证书生成签名和验签辅助类
  5. HDU 4712:Hamming Distance
  6. Qt之模拟时钟
  7. Spring MVC体系结构
  8. std::remove
  9. 浅谈Javascript中默认参数值的设置
  10. VS中调用SQL SERVER存储过程
  11. dp poj 1080 Human Gene Functions
  12. (第十二周)final预发布视频
  13. JAVA设计模式详解(三)----------装饰者模式
  14. ftp 服务
  15. svn备份与还原_脚本_(dump命令)
  16. HEVC (H.265)介绍(转)
  17. Java初学者都必须理解的六大问题 (整理自网络)
  18. ruby -检查json数据类型
  19. Django一些开发经验
  20. SpringMvc配置详解

热门文章

  1. 猿人学web爬虫攻防大战
  2. Kubernetes监控手册-01体系概述
  3. jmeter 之修改报告取样间隔时间以及APDEX 区间设置
  4. sha1_b64_scrape
  5. Python免杀过360
  6. 基于SqlSugar的开发框架循序渐进介绍(23)-- Winform端管理系统中平滑增加对Web API对接的需求
  7. 使用APICloud AVM多端组件快速实现app中的搜索功能
  8. [C++]全面理解C++中的引用
  9. C Primer Plus (6.16) 編程練習
  10. Coolify系列01- 从0到1超详细手把手教你上手Heroku 和 Netlify 的开源替代方案