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

小P像多数Python自学者一样,苦心钻研小半年,一朝出师投简历。

这不,一家招聘初级Python开发工程师的公司,发来的面试邀请,小P赶紧准备行头欣然赴约。

努力自学的小P

面试开场

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

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

小P作答

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

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

结局:黯然离场

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

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

更好的作答

那么,如果是我们该如何作答呢?既然是面试初级Python工程师,题目本身自然是不难的,只因为小P没有关注Python的基本模块:tempfile

其实这道题,如果使用Python的tempfile模块,很容易便实现了:

有时候知识面太窄,不仅容易重造轮子,还没人家原生的好用。简单解释下TemporaryFile。
TemporaryFile会针对系统动态的在临时路径下:

  1. windows:C:\Users\ADMINI~1\AppData\Local\Temp\
  2. linux: /tmp/

创建一个tmp开头+8位随机数的文件,文件在调用close方法时,释放文件内存并删除该临时文件。
使用tempfile.TemporaryFile,每次生成随机名称文件,不仅达到了美女面试官对于高可用的要求,也缩减了代码,完美!

当然我们也可以模拟该模块自己实现一个临时文件生成器,但前提是:

  1. 判断操作系统
  2. 调用random随机数
  3. 文件的自动清理等…

喜欢的朋友可以尝试自己来造一个轮子。

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

作者:华为云社区技术火炬手

点击关注,第一时间了解华为云新鲜技术~

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

  1. 当面试官问你GET和POST区别的时候,请这么回答.......

    文章内容转载于微信公众号WebTechGarden 一.GET和POST的'普通'区别 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就 ...

  2. 面试官问我:谈谈对Java GC的了解?回答完让我回家等消息....

    JVM的运行数据区 首先我简单来画一张 JVM的结构原理图,如下. 我们重点关注 JVM在运行时的数据区,你可以看到在程序运行时,大致有5个部分. 1.方法区 不止是存“方法”,而是存储整个 clas ...

  3. 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?

    写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...

  4. 「每日一题」有人上次在dy面试,面试官问我:vue数据绑定的实现原理。你说我该如何回答?

    关注「松宝写代码」,精选好文,每日一题 ​时间永远是自己的 每分每秒也都是为自己的将来铺垫和增值 作者:saucxs | songEagle 来源:原创 一.前言 文章首发在「松宝写代码」 2020. ...

  5. 每日一问:面试结束时面试官问"你有什么问题需要问我呢",该如何回答?

    面试结束时面试官问"你有什么问题需要问我呢",该如何回答?

  6. 面试官问我,Redis分布式锁如何续期?懵了。

    前言 上一篇[面试官问我,使用Dubbo有没有遇到一些坑?我笑了.]之后,又有一位粉丝和我说在面试过程中被虐了.鉴于这位粉丝是之前肥朝的粉丝,而且周一又要开启新一轮的面试,为了回馈他长期以来的支持,所 ...

  7. 面试官问,说一个你在工作非常有价值的bug

    如果你去参考面试,做足了准备,面对面试官员从容不迫,吐沫横飞的大谈自己的工作经历.突然,面试官横插一句:说一个你在工作非常有价值的bug.顿时,整个空气都仿佛都凝固了!“What?”... 我想没几个 ...

  8. 面试官问:JS的this指向

    前言 面试官出很多考题,基本都会变着方式来考察this指向,看候选人对JS基础知识是否扎实.读者可以先拉到底部看总结,再谷歌(或各技术平台)搜索几篇类似文章,看笔者写的文章和别人有什么不同(欢迎在评论 ...

  9. 当面试官问你sql优化的时候。。。

    当面试官问你有关sql优化的问题时,直接拿笔写给他: 8-select 9-distinct<column_list> 1-from left_table 3-<join_type& ...

随机推荐

  1. 数据源管理 | OLAP查询引擎,ClickHouse集群化管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.列式库简介 ClickHouse是俄罗斯的Yandex公司于2016年开源的列式存储数据库(DBMS),主要用于OLAP在线分析处理查询, ...

  2. webpack配置篇

    开发环境(development)和生产环境(production)的构建目标差异很大.在开发环境中,我们需要具有强大的.具有实时重新加载(live reloading)或热模块替换(hot modu ...

  3. 流复制-pg_start_backup(带自定义表空间)

    一.准备slave库 archive_mode = on ---开启归档模式 archive_command = 'test ! -f /mysqldata/pg/archive_active/%f ...

  4. vue实现elment 可编辑树形控件

    功能实现程度: elment树形控件,已具备新增.删除功能,此项目,添加编辑功能,新增时可对节点命名,也可直接给已添加的节点修改名字 先看效果: 控件有所改动,如加输入框,输入关键字过滤,节点图标变换 ...

  5. 【Redis】String应用场景

    单值缓存 SET key value GET key 对象缓存 SET user: value(json格式数据) MSET user::name value1 user::balance value ...

  6. Java内存虚拟机理解

        对于Java程序员,在虚拟机自动内存管理机制的帮助下,不需要再为每一个操作写配对的释放资源操作,不容易出现内存泄露和内存溢出问题.加深对Java虚拟机的理解,有助于在发现问题时精准定位问题,排 ...

  7. 【数据分析入门】之Spyder中如何让图表单独显示出来

    一般图表只显示在ipython console中,且是静态,无法进行放大,移动等操作解决方案:[win]tools——preferences——ipython console——graphics中ba ...

  8. python-基站位置查询

    本文采用的接口是聚合数据提供的 python2.7环境,3.x环境试了下好像不支持,获取位置信息为空 如下为运用代码: #coding=utf-8 ''' Created on 2019年9月18日 ...

  9. 特效 css3 渐变背景框

    .box{ 子级 position: relative; width: 300px; height: 400px; display: flex; justify-content: center; al ...

  10. 【JUC】阻塞队列&生产者和消费者

    阻塞队列 线程1往阻塞队列添加元素[生产者] 线程2从阻塞队列取出元素[消费者] 当队列空时,获取元素的操作会被阻塞 当队列满时,添加元素的操作会被阻塞 阻塞队列的优势:在多线程领域,发生阻塞时,线程 ...