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数据框时,就可以像下面这样做:

raw_string='''a,b,c
1,1,1
2,2,2
3,3,3
4,4,4
'''

with tempfile.TemporaryFile('w+') as f:
    f.write(raw_string)
    f.seek(0) #将指针移回文件开头

    demo_df=pd.read_CSV(f)

demo_df

创建临时目录

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

with tempfile.TemporaryDirectory() as p:

    print(p)
    print(os.path.exists(p))

print(os.path.exists(p))

典型的应用场景是配合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]

到此这篇关于Python实用技巧之临时文件的妙用的文章就介绍到这了,更多相关Python临时文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python中隐藏的五种实用技巧分享

    目录 1. ... 对象 2.解压迭代对象 3.展开的艺术 4.下划线 _ 变量 5.多种用途的else 循环 异常处理 1. ... 对象 没错,你没看错,就是 "..." 在Python中 ... 代表着一个名为 Ellipsis 的对象.根据官方说明,它是一个特殊值,通常可以作为空函数的占位符,或是用于Numpy中的切片操作. 如: def my_awesome_function():     ... 等同于: def my_awesome_function():     Ell

  • 分享15 超级好用得 Python 实用技巧

    目录 01 all or any 02 dir 03 列表(list)推导式 04 pprint 05 repr 06 sh 07 Type hints 08 uuid 09 wikipedia 10 xkcd 11 zip 12 emoji 13 howdoi 14 Jedi 15 **kwargs 01 all or any Python 语言如此流行的众多原因之一,是因为它具有很好的可读性和表现力. 人们经常开玩笑说 Python 是可执行的伪代码.当你可以像这样写代码时,就很难反驳. x

  • Python数据处理的三个实用技巧分享

    目录 1 Pandas 移除某列 2 统计标题单词数 3 Genre 频次统计 我使用的 Pandas 版本如下,顺便也导入 Pandas 库. >>> import pandas as pd >>> pd.__version__ '0.25.1' 在开始前先确保解释器和数据集在同一目录下: >>> import os >>> os.chdir('D://source/dataset') # 这是我的数据集所在目录 >>&

  • Python数据处理的26个Pandas实用技巧总结

    目录 从剪贴板中创建DataFram 将DataFrame划分为两个随机的子集 多种类型过滤DataFrame DataFrame筛选数量最多类别 处理缺失值 一个字符串划分成多列 Series扩展成DataFrame 对多个函数进行聚合 聚合结果与DataFrame组合 选取行和列的切片 MultiIndexedSeries重塑 创建数据透视表 连续数据转类别数据 StyleaDataFrame 额外技巧 ProfileaDataFrame 大家好,今天给大家分享一篇 pandas 实用技巧,

  • python实用的快捷语法技巧大全

    目录 前言 in判断 四种翻转字符串/列表的方式 平方数 进制转换 将字符串中的小写字母转为大写字母 一次性初始化多个变量 打印模块路径 列表去重 字典和列表推导 拼接字符串 循环枚举索引 开启文件分享 巧用else语句(重要) split reduce 我们把最近的知识结合起来做一道题 sorted 执行一个字符串表达式,并返回表达式的值 总结 前言 你知道a**3是什么意思吗? 你知道怎么打印模块路径吗? 你知道reduce()函数怎么用和列表怎么拼接字符串吗? 然而你可能全都知道 但是还是

  • 关于Python中进度条的六个实用技巧分享

    目录 1 简介 2 tqdm中实用的6个特性 2.1 autonotebook自动切换进度条风格 2.2 延迟渲染进度条 2.3 自定义进度条色彩 2.4 自主控制的进度上限 2.5 针对enumerate.zip和map的替代 2.6 设置进度条“用完即逝” 总结 1 简介 费老师我在几年前写过的一篇文章(https://www.jb51.net/article/243348.htm)中,介绍过tqdm这个在当下Python圈子中已然非常流行的进度条库,可以帮助我们为任何具有循环迭代过程的代码

  • 分享一些非常实用的Python小技巧

    目录 1.唯一性 2.变位词(相同字母异序词) 3.内存 4.字节大小 5.打印N次字符串 6.首字母大写 7.列表细分 8.压缩 9.计数 10.链式比较 11.逗号分隔 12.元音计数 13.首字母小写 14.展开列表 15.寻找差异 16.输出差异 17.链式函数调用 18. 19.将两个列表转换为字库 20.出现频率最高的元素 21.回文(正反读有一样的字符串) 22.不用if-else语句的计算器 23.随机排序 24.展开列表 1.唯一性 以下方法可以检查给定列表是否有重复的地方,可

  • Python实用技巧之临时文件的妙用

    目录 创建临时文件 创建临时目录 当我们用Python编写程序时,有时候需要临时存储数据且不希望占用多少内存,亦或是需要写出文件到文件系统供后续程序读取,这些情况下以创建临时文件的方式进行处理,既不会干扰本地文件系统,又安全省事. 而通过使用Python中的标准库tempfile,我们就可以很方便的进行临时文件相关操作,其主要用法有两种: 创建临时文件 tempfile的经典用法之一是使用其TemporaryFile()配合with上下文管理器,在本地文件系统的临时文件目录下创建具有随机名称的文

  • Python 实用技巧之正则表达式查找和替换文本的操作方法

    1.需求 我们想对字符串中的文本做查找和替换. 2.解决方案 对于简单的文本模式,使用str.replace()即可. 例如: text='mark ,帅哥,18,183 帅,mark' print(text.replace('18','19')) print(text) 运行结果: mark ,帅哥,19,193 帅,mark mark ,帅哥,18,183 帅,mark 针对更为复杂的模式,可以使用re模块中的sub()函数. 实例:将日期格式从"11/28/2018"改为&quo

  • Python 实用技巧之利用Shell通配符做字符串匹配

    1.需求 当工作在UNIX Shell下时,我们想使用常见的通配符模式(即:.py,Dat[0-9].csv等)来对文本做匹配. 2.解决方案 fnmatch模块提供了两个函数:fnmatch()和fnmatchcase(),可用来执行这样的匹配,使用起来非常简单. 实例: from fnmatch import fnmatch,fnmatchcase print(fnmatch('mark.txt','*.txt')) print(fnmatch('mark.txt','?ark.txt'))

  • 新手必备的Python实用技巧和工具

    一.交换变量 x = 6 y = 5 x, y = y, x print x >>> 5 print y >>> 6 二.if 语句在行内 print "Hello" if True else "World" >>> Hello 三.连接 下面的最后一种方式在绑定两个不同类型的对象时显得很cool. nfc = ["Packers", "49ers"] afc = [&qu

  • 初学Python实用技巧两则

    本文记录了初学Python常用的两则实用技巧,分享给大家供大家参考之用.具体如下: 1.可变参数 示例代码如下: >>> def powersum(power, *args): ... '''''Return the sum of each argument raised to specified power.''' ... total = 0 ... for i in args: ... total += pow(i, power) ... return total ... >&

  • Python实用技巧之利用元组代替字典并为元组元素命名

    前言 本文主要给大家介绍了关于Python利用元组代替字典并为元组元素命名的相关内容,下面话不多说了,来一起看看详细的介绍吧 场景: 一般使用字典定义一个人的姓名,年龄,性别,邮箱等信息是非常方便的,比如: student_one = {'name': 'Tom', 'age': 19, 'sex': 'male', 'email': 'tom123@hotmail.com'} 使用元组表示则为: student_one = ('Tom', 19, 'male', 'tom123@hotmail

  • Python实用技巧之列表、字典、集合中根据条件筛选数据详解

    通用做法:迭代 以列表为例: 筛选出下列数字大于等于0的数 data = [2, 7, -4, -1, 3, 0, 8] res = [] for i in data: if i >= 0: res.append(i) print(res) 运行结果: [2, 7, 3, 0, 8] 奇淫巧技--列表筛选 使用filter函数 随机生成一组正负数皆有的数,筛选出大于等于0的数 flilter(function or None, iterable) from random import randi

  • 常用的10个Python实用小技巧

    大家好,都说追女孩方法大于态度,学Python也是,今天就给大家分享的是我在用Python编写程序时常用的一些小技巧. 1.多次打印同一个字符 在Python中,不用特地写一个函数来重复打印同一个字符,直接使用Print就可以 tem = 'I Love Python ' print(tem * 3) I Love Python I Love Python I Love Python 2.在函数内部使用生成器 在写Python程序时,我们可以在函数内部直接使用生成器,这样可以使代码更简洁. su

  • python 中的9个实用技巧,助你提高开发效率

    整理字符串输入 整理用户输入的问题在编程过程中极为常见.通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作.但是如果问题很复杂,可能有更好的方法来解决: user_input = "This string has some whitespaces... " character_map = { ord( ) : , ord( ) : , ord( ) : None } user_input.translate(character_map) #

随机推荐