<rp id="wnpn7"><ruby id="wnpn7"></ruby></rp>
<progress id="wnpn7"><track id="wnpn7"><rt id="wnpn7"></rt></track></progress>
<ruby id="wnpn7"></ruby>
<ruby id="wnpn7"><blockquote id="wnpn7"><div id="wnpn7"></div></blockquote></ruby>

    1. <em id="wnpn7"><ruby id="wnpn7"><input id="wnpn7"></input></ruby></em>
      1. <button id="wnpn7"><acronym id="wnpn7"></acronym></button><button id="wnpn7"><acronym id="wnpn7"></acronym></button>

        <rp id="wnpn7"><acronym id="wnpn7"></acronym></rp>

        <li id="wnpn7"><object id="wnpn7"><u id="wnpn7"></u></object></li>
        VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 編程開發 > python入門 >
        • python入門教程之Python3標準庫:tempfile臨時文件系統對象

        本站最新發布   Python從入門到精通|Python基礎教程
        試聽地址  
        http://www.squ68.com/eschool/python.html


        1. tempfile臨時文件系統對象

        要想安全的創建名字唯一的臨時文件,以防止被試圖破壞應用或竊取數據的人猜出,這很有難度。tempfile模塊提供了多個函數來安全的創建臨時文件系統資源。TemporaryFile()打開并返回一個未命名的文件,NamedTemporaryFile()打開并返回一個命名文件,SpooledTemporaryFile在將內容寫入磁盤之前先將其保存在內存中,TemporaryDirectory是一個上下文管理器,上下文關閉時會刪除這個目錄。

        1.1 臨時文件

        如果應用需要臨時文件來存儲數據,而不需要與其他程序共享這些文件,則應當使用TemporaryFile()函數創建文件。這個函數會創建一個文件,而且如果平臺支持,它會立即斷開這個新文件的鏈接。這樣一來,其他程序就不可能找到或打開這個文件,因為文件系統表中根本沒有這個文件的引用。對于TemporaryFile()創建的文件,無論通過調用close()還是結合使用上下文管理器API和with語句,關閉文件時都會自動刪除這個文件。

        
        	
        1. import os
        2. import tempfile
        3.  
        4. print('Building a filename with PID:')
        5. filename = '/guess_my_name.{}.txt'.format(os.getpid())
        6. with open(filename, 'w+b') as temp:
        7. print('temp:')
        8. print(' {!r}'.format(temp))
        9. print('temp.name:')
        10. print(' {!r}'.format(temp.name))
        11.  
        12. # Clean up the temporary file yourself.
        13. os.remove(filename)
        14.  
        15. print()
        16. print('TemporaryFile:')
        17. with tempfile.TemporaryFile() as temp:
        18. print('temp:')
        19. print(' {!r}'.format(temp))
        20. print('temp.name:')
        21. print(' {!r}'.format(temp.name))

        這個例子展示了采用不同方法創建臨時文件的差別,一種做法是使用一個通用模式來構造臨時文件的文件名,另一種做法是使用TemporaryFile()函數。TemporaryFile()返回的文件沒有文件名。

        默認的,文件句柄是使用模式'w+b'創建的,以便它在所有平臺上都表現一致,并允許調用者讀寫這個文件。 

        
        	
        1. import os
        2. import tempfile
        3.  
        4. with tempfile.TemporaryFile() as temp:
        5. temp.write(b'Some data')
        6.  
        7. temp.seek(0)
        8. print(temp.read())

        寫文件之后,必需使用seek()"回轉"文件句柄以便從文件讀回數據。

        要以文本模式打開文件,創建文件時要設置mode為'w+t'。

        
        	
        1. import tempfile
        2.  
        3. with tempfile.TemporaryFile(mode='w+t') as f:
        4. f.writelines(['first\n', 'second\n'])
        5.  
        6. f.seek(0)
        7. for line in f:
        8. print(line.rstrip())

        這個文件句柄將把數據處理為文本。

        1.2 命名文件

        有些情況下,可能非常需要一個命名的臨時文件。對于跨多個進程甚至主機的應用來說,為文件命名是在應用不同部分之間傳遞文件的最簡單的方法。NamedTemporaryFile()函數會創建一個文件,但不會斷開它的鏈接,所以會保留它的文件名(用name屬性訪問)。 

        
        	
        1. import os
        2. import pathlib
        3. import tempfile
        4.  
        5. with tempfile.NamedTemporaryFile() as temp:
        6. print('temp:')
        7. print(' {!r}'.format(temp))
        8. print('temp.name:')
        9. print(' {!r}'.format(temp.name))
        10.  
        11. f = pathlib.Path(temp.name)
        12.  
        13. print('Exists after close:', f.exists())

        句柄關閉后文件將被刪除。

        1.3 假脫機文件

        如果臨時文件中包含的數據相對較少,則使用SpooledTemporaryFile可能更高效,因為它使用一個io.BytesIO或io.stringIO緩沖區在內存中保存內容,直到數據達到一個閾值時,數據將“滾動”并寫入磁盤,然后用常規的TemporaryFile()替換這個緩沖區。 

        
        	
        1. import tempfile
        2.  
        3. with tempfile.SpooledTemporaryFile(max_size=100,
        4. mode='w+t',
        5. encoding='utf-8') as temp:
        6. print('temp: {!r}'.format(temp))
        7.  
        8. for i in range(3):
        9. temp.write('This line is repeated over and over.\n')
        10. print(temp._rolled, temp._file)

        這個例子使用SpooledTemporaryFile的私有屬性來確定何時滾動到磁盤。除非要調整緩沖區大小,否則很少需要檢查這個狀態。

        要顯示的將緩沖區寫至磁盤,可以調用rollover()或fileno()方法。 

        
        	
        1. import tempfile
        2.  
        3. with tempfile.SpooledTemporaryFile(max_size=1000,
        4. mode='w+t',
        5. encoding='utf-8') as temp:
        6. print('
        相關教程
                
        免费看成年人视频大全_免费看成年人视频在线观看