站長資訊網
        最全最豐富的資訊網站

        學習如何正確使用Python臨時文件

        學習如何正確使用Python臨時文件

        1、前言

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

        臨時文件引起的最大問題就是,可以預測文件名,導致惡意用戶可以預測臨時文件名,從而創建軟鏈接劫持臨時文件。

        相關免費學習推薦:python視頻教程

        2、tempfile模塊介紹

        創建臨時文件一般使用的模塊就是tempfile,此模塊庫函數常用的有以下幾個:

        • tempfile.mktemp # 不安全,禁止使用
        • tempfile.mkstemp # 隨機創建tmp文件,默認創建的文件在/tmp目錄,當然也可以指定(可以使用)
        • tempfile.TemporaryFile # 內存中創建文件,文件不會存儲在磁盤,關閉后即刪除(可以使用)
        • tempfile.NamedTemporaryFile(delete=True) 當delete=True時,作用跟上面一樣,當是False時,會存儲在磁盤(可以使用)

        3、示例介紹

        以下幾種方式分別介紹了安全的創建臨時文件及不安全的方式。

        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:

        # 句柄關閉,文件即刪除 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()  # 文件關閉即刪除

        相關免費學習推薦:python教程(視頻)

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 麻豆精品三级全部视频| 亚洲无线观看国产精品| 无码精品第一页| 久久亚洲国产欧洲精品一| 亚洲乱码精品久久久久..| 国产免费久久精品丫丫| 99爱在线精品免费观看| 亚洲国产成人一区二区精品区 | 91麻豆精品视频| 国内精品久久久久影院日本| 久久亚洲精品成人av无码网站| 久久青草国产精品一区| 精品久久久无码人妻中文字幕豆芽| 麻豆精品三级全部视频| 国产精品性爱| 99免费精品国产| 精品久久久久久综合日本| 国内少妇偷人精品视频免费| 一本色道久久综合亚洲精品| 久久久久久亚洲精品不卡 | 亚洲国产精品18久久久久久| 国产在线精品一区免费香蕉| 青青青国产依人精品视频| 国产suv精品一区二区33| 欧美午夜精品久久久久免费视| 中文国产成人精品久久不卡| 亚洲精品和日本精品| 亚洲AV永久无码精品一区二区国产| 精品人体无码一区二区三区| 91探花国产综合在线精品| 久久久久国产精品| 精品一区二区三区在线视频| 2022国内精品免费福利视频| 国产精品9999久久久久| 国产亚洲欧美精品久久久| 国产午夜精品一区二区三区 | 青青草精品视频| 亚洲精品性视频| 99热热久久这里只有精品68| 国产91精品一区二区麻豆亚洲| 97精品国产高清自在线看超|