美女面試官問我Python如何優雅的創建臨時文件,我的回答….

【摘要】 本故事純屬虛構,如有巧合,他們故事裏的美女面試官也肯定沒有我的美,請自行腦補…

小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. 文件的自動清理等…

喜歡的朋友可以嘗試自己來造一個輪子。

好了,今天的文章分享就到這裡,不積跬步無以至千里,前晚不要忽略這些小細節。最近項目進度太忙,有陣子沒寫原創了,希望大家喜歡…

作者:華為雲社區技術火炬手

點擊關注,第一時間了解華為雲新鮮技術~