美女面试官问我Python如何优雅的创建临时文件,我的回答....

python:tempfile --- 生成临时文件和目录 阅读详情
努力自学的小P

本故事纯属虚构,如有巧合,他们故事里的美女面试官也肯定没有我的美,请自行脑补...

小P是想多数Python自学者一样,苦心钻研小半年,一朝出师投简历。
这不,一家招聘初级Python开发工程师的公司,向来发来的面试邀请,小P赶紧准备行头欣然赴约。

面试开场

接待他的是一位美女面试官,小P决定要好好表现下。经过一轮套路的自我介绍后,到了技术面试的环节。美女面试官问了这么一道题:

假设你正在编写的方法,需要每次执行时,在服务器上创建一个临时文件同时支持书写部分内容,而后将该文件的位置传输给第三方的类。待第三方类获取到你文本内的数据时,最后执行对该临时文件的删除操作。请在纸上补充完善代码:

import os

def three_func(file_object=None):
    data = file_object.read()
    final_data = data.decode() if isinstance(data, bytes) else data
    print(f'read file info:{final_data}')

def make_temp_file():
    ...
    # call three_func
    three_func(_tmp_file)
    ...

make_temp_file()
小P作答

小P一想,这个美女还挺心机的,要求边读边写,但这可难不倒我,so easy!于是开始了他的“表演”:

def make_temp_file():
    _base_dir = os.path.dirname(os.path.realpath(__file__))
    _tmp_file = os.path.join(_base_dir, 'tmp_file.txt')
    print(_tmp_file)
    with open(_tmp_file, 'w+') as f:
        f.write("something")
        f.seek(0)
        # call three_func
        three_func(f)
    os.remove(_tmp_file)

output:
D:\Codes_Repository\PythonArticles\tmp_file.txt
read file info:something

写完后,小P自信的给了美女面试官一个微笑。通过小P的代码,可以看到他对文件的读写还是有一定了解的。知道w+的方式可以同时支持读写操作,并通过seek的指针偏移,来达到读取已写入内容的效果,大家觉得小P的答案能给多少分?

黯然离场

美女面试官沉吟半天,说到:“虽然我们招聘的是初级Python开发,要求也不高,可你理解我说的临时文件吗?你以为定义一个带tmp的文件名就叫临时文件?而且,如果你的上游还存在服务去多次调用你,你定义的这个变量支持高可用吗?”

小P心一凉,这次面试只能以美女面试官的微微一笑而告终了...

更好的作答

那么,如果是我们该如何作答呢?既然是面试初级Python工程师,题目本身自然是不难的,只因为小P没有关注Python的基本模块:tempfile
其实这道题,如果使用Python的tempfile模块,很容易便实现了:

import tempfile

def make_temp_file():
    _tmp_file = tempfile.TemporaryFile()
    try:
        print(_tmp_file.name)
        _tmp_file.write(b"something")
        _tmp_file.seek(0)
        # call three_func
        three_func(_tmp_file)
    finally:
        _tmp_file.close()

output:
C:\Users\ADMINI~1\AppData\Local\Temp\tmprfz_ifs7
read file info:something

有时候,知识面太窄,不仅容易重造轮子,还没人家原生的好用。简单解释下TemporaryFile。
TemporaryFile会针对系统动态的在临时路径下:
1.windows:C:\Users\ADMINI~1\AppData\Local\Temp
2.linux: /tmp/
创建一个tmp开头+8位随机数的文件,文件在调用close方法是,释放文件内存并删除该临时文件。
使用tempfile.TemporaryFile,每次生成随机名称文件,不仅达到了美女面试官对于高可用的要求,也缩减了代码,完美!
当然我们也可以模拟该模块自己实现一个临时文件生成器,但前提是:

  1. 判断操作系统
  2. 调用random随机数
  3. 文件的自动清理等...
    喜欢的朋友可以尝试自己来造一个轮子。

好了,今天的文章分享就到这里,不积跬步无以至千里,前晚不要忽略这些小细节。最近项目进度太忙,有阵子没写原创了,希望大家喜欢...

The End

期待你关注我的公众号清风Python,如果你觉得不错,希望能动动手指转发给你身边的朋友们。

易灵思Trion FPGA实战:5分钟搞定MIPI硬核配置(附Interface Designer避坑指南) 本文详细介绍了易灵思Trion FPGA中MIPI硬核的快速配置方法,通过Interface Designer工具实现从时钟配置到数据收发的全流程实战。特别针对初次接触Trion系列的设计师,提供了六个关键配置陷阱及解决方案,帮助开发者高效完成嵌入式视觉和高速数据传输项目。 阅读详情

相关推荐

深入探讨 VQ-VAE:理解变分量化自动编码器

VQ-VAE代表"Variational Quantized Variational Autoencoder",是一种生成模型,通常用于处理高维数据,如图像和音频。它的设计灵感来自于变分自动编码器(VAE)和量化方法,结合了它们的优点,使得 VQ-VAE 能够生成高质量的数据,并在数据表示上引入离散性。VQ-VAE 是一种强大的生成模型,结合了变分自动编码器和量化方法的优点。它在图像和音频生成、数据压缩和生成性对抗网络等领域具有广泛的应用。

DeepViewInsight的博客 7016

使用python的tempfile模块创建临时文件

什么样的情况下需要我创建临时文件呢?我很早就知道tempfile这个模块,但一直没有使用过它,也没有兴趣去研究它,一度认为自己用不到这个模块。存在即合理,合理的才能存在,想来是我不够虚心,才没有看到这个模块的应用价值。 1. 临时文件目录 在linux系统下有一个/tmp 目录,这个目录下存储的都是些临时文件,创建这些临时文件的可能是操作系统,也可能是你安装的某个软件系统,比如hadoop,你自己写的程序也可以对这里的文件进行读写操作。 临时文件目录下的文件夹和文件,会被定期清理,默认是30天。这就要求/t

KWSY2008的专栏 572

科研绘图实战:用Adobe Illustrator高效排版期刊论文图片

本文详细介绍了使用Adobe Illustrator高效排版科研论文图片的完整工作流。针对期刊投稿常见的图片格式问题,文章重点讲解了矢量图与位图的预处理、AI中的精准对齐与分布技巧、文字样式统一管理以及最终输出TIFF/PDF等符合出版要求的格式。掌握这套方法能确保图片满足高分辨率、规范字体和精确尺寸等期刊硬性标准,显著提升投稿效率。

tomato的博客 1433

Python 生成临时文件和目录 -tempfile

请看代码:官方文档 详见 tempfile- 生成临时文件和目录>>> import tempfile # create a temporary file and write some data to it >>> fp = tempfile.TemporaryFile() >>> fp.write(b'Hello world!') # re...

Welcome to read Sean's blog 1万+

DDR5内存命令真值表详解:如何正确解析JESD79-5标准中的关键指令

本文深度解析JESD79-5标准中的DDR5内存命令真值表,将其视为动态通信协议进行拆解。详细阐述了1-Cycle与2-Cycle命令的区别、Bank Group寻址机制以及模式寄存器(MR)操作流程,为硬件与固件工程师提供了从信号解析到系统调试的完整实战指南,是理解和优化高性能计算平台内存子系统的核心。

numpy6sculptor的博客 548

VConsole动态加载

// 移动端真机调试工具 vconsole import VConsole from "vconsole"; import Vue from "vue"; // 动态使用VConsole if(process.env.NODE_ENV==='production'){ if(process.env.VUE_APP_BASEURL.includes('test')||process.env.VUE_APP_BASEURL.includes('pre')){ Vue.prototype

aliven1的博客 1043

python 创建临时文件 NamedTemporaryFile ,出现 Permission denied

Windows操作系统 单独运行这些没问题,但是当我调用的时候,会出现问题,下面阐述 ~ 1、当有 delete=False 会存在C盘,C:\Users\LIUWENYU\AppData\Local\Temp\tmppzweoxnj 2、当没有 delete=False,程序运行完会自动删除,不保存 from tempfile import NamedTemporaryFile # with NamedTemporaryFile('w+t',delete=False) as f: with Na

YUAYU博客 2458

增益调度控制 —— 理论、案例与交互式 GUI 实现

本文详细介绍了增益调度控制的基本原理、数学模型及公式推导,探讨了该方法在适应非线性系统和大范围工作条件下的优势与局限。通过航空飞行控制、发动机推力控制以及化工过程控制三个典型案例,我们展示了如何利用调度变量动态调整控制增益,从而使得控制系统在各个工作点均能达到优良性能。为帮助工程师和研究者更直观地理解并验证增益调度控制的实际效果,本文提供了一套基于 Python 与 PyQt6 的交互式 GUI 控制系统代码。用户不仅可以实时查看仿真数据,还能通过在线调节参数直观体验调度控制的优势。

闲人编程的博客 1480

python得到临时文件夹

python提供了一个得到临时文件夹的模块 tempfile 可以很方便得到各个平台的临时文件夹,linux,windows,mac OS 下面是我在windows xp下面的执行结果 >>> import tempfile >>> print tempfile.gettempdir() c:\docume~1\admini~1\locals~1\tem

huangxiansheng1980的专栏 2031

RK3568平台YOLOv11模型部署全流程实战:环境搭建、模型转换与性能优化解析

在AI边缘计算领域,瑞芯微RK3568芯片凭借其强大的NPU算力和丰富的接口资源,成为了众多开发者的首选平台。然而,瑞芯微官方文档虽然提供了YOLO11预训练模型的部署方案,但对于需要自定义数据集训练的开发者来说,从模型训练到板端部署的完整流程却缺乏详细指导。本文将带你走完从环境搭建、数据准备、模型训练到最终板端部署的完整技术路线,并分享实际开发中遇到的各种坑点和解决方案。让我们一起探索如何在RK3568平台上实现30FPS稳定推理的YOLO11目标检测应用!

LXY_LOVE36的博客 120

AI 大模型应用数据中心的数据清洗工具

1. 背景介绍 在人工智能大模型应用的浪潮中,数据清洗作为数据预处理的重要环节,对于提升模型性能和可靠性具有至关重要的作用。数据中心作为人工智能模型的运行环境,面临着海量数据流和多样化的数据类型,如何高效、准确地进行数据清洗,成为应用大模型的关键问题之一。本文将详细介绍AI大模型应用数据中心的数据清洗工具,包括核心概念、算法原理、具体操作步骤、应用场

SuperAGI2025 1804

python创建txt文件_美女面试官问我Python如何优雅的创建临时文件,我是这样回答的...

努力自学的小P本故事纯属虚构,如有巧合,他们故事里的美女面试官也肯定没有我的美,请自行脑补...小P像多数Python自学者一样,苦心钻研小半年,一朝出师投简历。这不,一家招聘初级Python开发工程师的公司,发来了面试邀请,小P赶紧准备行头欣然赴约。面试开场接待他的是一位美女面试官,小P决定要好好表现下。经过一轮套路的自我介绍,来到技术面试的环节。美女面试官问了这么一道题:假设你正在编写的方法,...

weixin_39625429的博客 125

SAP采购申请审批策略配置简介

SAP采购申请审批策略配置简介 1、CT04创建特征

我小时候很黑的博客 8162

优快云日报191108:光棍节就要到了,要不要给你介绍个 python 对象?

优快云日报来啦!给大家奉上当日最新鲜的技术干货! 光棍节就要到了,要不要给你介绍个 python 对象? 作者:天元浪子 光棍节就要到了,一说介绍对象,我猜你一定想到了派森大叔家的克蕾丝(class)小姐姐和黛夫(def)小哥哥。别想入非非了,严肃点儿!我们今天的的话题,不是介绍男女朋友,而是讲解如何面向对象编程,也就是程序员常说的OOP啦。 不知道前辈们为什么会把 Object Orien...

优快云 官方博客 3024

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python中temp的用法_使用Python生成临时文件和目录

标准库中的tempfile模块定义用于创建临时文件和目录的函数。它们在操作系统文件系统定义的特殊临时目录中创建。例如,在Windows下,临时文件夹位于profile / AppData / Local / Temp中,而在Linux中,临时文件位于/ tmp目录中。在tempfile模块中定义了以下功能TemporaryFile()该函数在temp目录中创建一个临时文件,并返回一个文件对象,类似...

weixin_39687359的博客 5194

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python 获取系统临时目录,临时文件的操作方法

为什么80%的码农都做不了架构师?>>> ...

weixin_34313182的博客 5143

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

python 创建临时文件读写

python读 写临时文件 看到网上一篇文章提到面试的时候,面试官提到以下要求: 假设你正在编写的方法,需要每次执行时,在服务器上创建一个临时文件同时支持书写部分内容,而后将该文件的位置传输给第三方的类。待第三方类获取到你文本内的数据时,最后执行对该临时文件的删除操作,同时需要支持高可用,也就是写入,再读取一次便销毁。 挺有意思的一个题,本来想手写实现,搜了搜原来python已经有了相关的轮子,那干嘛还造轮子,下面是代码。 import tempfile def read_temp_file(

sinat_32651363的博客 2200

python 临时文件夹 的 tempfile模块学习

为什么80%的码农都做不了架构师?>>> ...

weixin_33672109的博客 454

Python每日一练0032

问题 你需要在程序执行时创建一个临时文件或目录,并希望使用完之后可以自动销毁掉。 解决方案 tempfile模块中有很多的函数可以完成这任务。 为了创建一个匿名的临时文件,可以使用 tempfile.TemporaryFile from tempfile import TemporaryFile with TemporaryFile('...

weixin_33724659的博客 249

python创建临时文件

dd

chencaw的专栏 928

Linux:使用mktemp创建临时文件/目录

mktemp的作用是创建临时文件/目录,并返回文件名,简单的语法如下: NAME mktemp - create a temporary file or directory SYNOPSIS mktemp [OPTION]... [TEMPLATE] DESCRIPTION Create a temporary file or director

匿_名_用_户的专栏 8068

Python创建临时文件方法tempfile.TemporaryFile()

Python创建临时文件方法tempfile.TemporaryFile() import tempfile text="我是准备写入临时文件的文本内容,这里可以是图片可以是富文本" # 创建临时文件 temp = tempfile.TemporaryFile() temp.write(text.encode("utf-8")) # 读取文件前将文件的指针移动到开始处 """ - File.seek(0) - Python文件读取, 0 指针回到文件开头 1当前位置 2文件结尾 """ temp

蓝小白的博客 2418

Python读写yaml排版混乱还丢失注释?我来告诉你解决办法!

Python使用Yaml 日常我们在使用Python读写Yaml时,都是使用推荐的Pyyaml模块。 安装: pip install pyyaml 导入: import yaml 至于操作,简直不要太简单... yaml只有两个方法load、dump,而且使用完全和json模块一样。但真的如此吗?显然不是... Yaml安全告警 由于Yaml数据存在安全隐患,在使用pyyaml进行load时,会给...

清风Python 4531

当Python遇到zip解压炸弹,防护不到位让你泪流满面!

zip解压炸弹 在文章的开头,让我们先来介绍一下zip解压炸弹是个什么妖怪! 解压炸弹是指解压缩后能够产生巨大的数据量的可疑压缩文件!默认设置是文件扫描中产生500MB以上解压数据的是“解压炸弹”,实时监控中是100MB,邮件监控是30MB。 这样的压缩文件解压缩可能对解压程序造成严重负担或崩溃(可能用来攻击压缩软件以及占用大量电脑资源,或者杀毒软件的解压缩功能)。 解压炸弹内,还可能存在病毒,...

清风Python 2852
上一篇: 聚焦面(考)试:那些Python与Java中,你忽略的细节
下一篇: 厌倦了if.else的你,能否考虑换一种选择结构?
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值