如何正確使用Python臨時(shí)文件

      網(wǎng)友投稿 1063 2022-05-28

      1.前言

      臨時(shí)文件通常用來保存無法保存在內(nèi)存中的數(shù)據(jù),或者傳遞給必須從文件讀取的外部程序。一般我們會(huì)在/tmp目錄下生成唯一的文件名,但是安全的創(chuàng)建臨時(shí)文件并不是那么簡(jiǎn)單,需要遵守許多規(guī)則。永遠(yuǎn)不要自己去嘗試做這件事,而是要借助庫(kù)函數(shù)實(shí)現(xiàn)。而且也要小心清理臨時(shí)文件。

      臨時(shí)文件引起的最大問題就是,可以預(yù)測(cè)文件名,導(dǎo)致惡意用戶可以預(yù)測(cè)臨時(shí)文件名,從而創(chuàng)建軟鏈接劫持臨時(shí)文件。

      如何正確使用Python臨時(shí)文件

      2. tempfile模塊介紹

      創(chuàng)建臨時(shí)文件一般使用的模塊就是tempfile,此模塊庫(kù)函數(shù)常用的有以下幾個(gè):

      tempfile.mktemp # 不安全,禁止使用

      tempfile.mkstemp # 隨機(jī)創(chuàng)建tmp文件,默認(rèn)創(chuàng)建的文件在/tmp目錄,當(dāng)然也可以指定(可以使用)

      tempfile.TemporaryFile # 內(nèi)存中創(chuàng)建文件,文件不會(huì)存儲(chǔ)在磁盤,關(guān)閉后即刪除(可以使用)

      tempfile.NamedTemporaryFile(delete=True) 當(dāng)delete=True時(shí),作用跟上面一樣,當(dāng)是False時(shí),會(huì)存儲(chǔ)在磁盤(可以使用)

      3. 示例介紹

      以下幾種方式分別介紹了安全的創(chuàng)建臨時(shí)文件及不安全的方式。

      3.1 不正確示例:

      不正確1:

      import os import tempfile # This will most certainly put you at risk tmp = os.path.join(tempfile.gettempdir(), filename) if not os.path.exists(tmp): with open(tmp, "w") file: file.write("defaults")

      不正確2:

      import os import tempfile open(tempfile.mktemp(), "w")

      不正確3:

      filename = "{}/{}.tmp".format(tempfile.gettempdir(), os.getpid()) open(filename, "w")

      3.2 正確示例

      正確1:

      fd, path = tempfile.mkstemp() try: with os.fdopen(fd, 'w') as tmp: # do stuff with temp file tmp.write('stuff') finally: os.remove(path)

      正確2:

      句柄關(guān)閉,文件即刪除

      with tempfile.TemporaryFile() as tmp: # Do stuff with tmp tmp.write('stuff')

      正確3:

      tmp = tempfile.NamedTemporaryFile(delete=True) try: # do stuff with temp tmp.write('stuff') finally: tmp.close() # 文件關(guān)閉即刪除

      Python

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:那些意想不到的黑客攻擊方式
      下一篇:索引的含義和特點(diǎn) 筆記
      相關(guān)文章
      亚洲噜噜噜噜噜影院在线播放| 久久久久亚洲AV无码麻豆| 亚洲噜噜噜噜噜影院在线播放| 精品亚洲aⅴ在线观看| 久久久久久久综合日本亚洲| 中文字幕亚洲无线码a| 国产亚洲?V无码?V男人的天堂 | 综合自拍亚洲综合图不卡区| 久久亚洲综合色一区二区三区| 亚洲自偷自偷在线制服| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲fuli在线观看| 亚洲av无码片在线观看| 亚洲欧洲另类春色校园网站| 亚洲国产成人精品激情| 一区二区亚洲精品精华液| 在线a亚洲老鸭窝天堂av高清| 亚洲精品无码你懂的| 精品无码专区亚洲| 亚洲毛片av日韩av无码| 久久久久亚洲AV无码专区网站| 国产午夜亚洲精品午夜鲁丝片| 亚洲无av在线中文字幕| 亚洲成AV人片在线播放无码| 无码乱人伦一区二区亚洲一 | 国产精品亚洲专区无码WEB| 国产精品亚洲lv粉色| 亚洲成av人片在线观看天堂无码 | 亚洲精品美女在线观看播放| 亚洲国产综合自在线另类| 亚洲一区二区三区不卡在线播放 | 亚洲精品无码av片| 国产精品亚洲二区在线| 国产精品亚洲视频| 亚洲精品成人网站在线观看 | 亚洲a无码综合a国产av中文| 亚洲另类激情专区小说图片| 亚洲VA中文字幕无码一二三区| 久久久久亚洲AV成人片| 亚洲伊人久久大香线蕉结合| 亚洲AV无码男人的天堂|