自動目錄格式怎麼設定
1。 現象
在程式執行時建立一個臨時檔案或目錄,並希望使用完之後可以自動銷燬掉
2。 原因分析
無
3。 問題解決
tempfile 模組中有很多的函式可以完成這任務。為了建立一個匿名的臨時檔案,可以使用 tempfile。TemporaryFile
import tempfileimport os。path# ‘
也可以使用with語句
with tempfile。TemporaryFile(‘w+t’, encoding=‘utf-8’) as f_obj: print(f_obj。name) print(os。path。normpath(f_obj。name)) f_obj。write(‘Hello World\n’) f_obj。write(‘Cory Testing\n’) f_obj。seek(0) data = f_obj。read() print(data)
TemporaryFile 的第一個引數是檔案模式,通常來講文字模式使用 w+t ,二進位制模式使用 w+b,其他引數與 open 函式相同
引數
解釋
mode
模式引數,預設‘w+b’ 建立的檔案可讀可寫,b表示二進位制模式,可以通用所有系統平臺
buffering
與 open 函式相同,用於設定緩衝策略的可選整數,可選值0,1, >1 ,0表示緩衝buffering關閉,1代表行緩衝,>1 表示初始化的buffering緩衝
encoding
與 open 函式相同,返回的資料採用何種編碼
newline
與 open 函式相同,控制通用換行符模式的工作原理
suffix
檔名字尾,值為None,表示沒有後綴
prefix
檔名字首,如果值為None,使用預設使用 gettempprefix 和 gettempprefixb 返回的值作為字首,
dir
檔案所在目錄,如果值為None,使用預設目錄儲存檔案
在大多數 Unix 系統上,透過 TemporaryFile 建立的檔案都是匿名的,甚至連目錄都沒有。如果你想打破這個限制,可以使用 NamedTemporaryFile 來代替
實驗得知,兩者的名稱都可以獲得
named_f_obj = tempfile。NamedTemporaryFile(‘w+t’, encoding=‘utf-8’)# ‘C:\Users\ADMINI~1\AppData\Local\Temp\tmpm_1vwckp’print(named_f_obj。name)unamed_f_obj = tempfile。TemporaryFile(‘w+t’, encoding=‘utf-8’)# ‘C:\Users\ADMINI~1\AppData\Local\Temp\tmpozlh_men’print(unamed_f_obj。name)# TemporaryFile 與 NamedTemporaryFile 一樣,結果檔案關閉時會被自動刪除掉。如果不想這麼做,可以傳遞一個關鍵字引數delete=False 即可named_f_obj = tempfile。NamedTemporaryFile(‘w+t’, encoding=‘utf-8’, delete=False)# ‘C:\Users\ADMINI~1\AppData\Local\Temp\tmp55k__4ri’print(named_f_obj。name)unamed_f_obj = tempfile。TemporaryFile(‘w+t’, encoding=‘utf-8’, delete=False)# ‘C:\Users\ADMINI~1\AppData\Local\Temp\tmpvoegzv8z’print(unamed_f_obj。name)
為了建立一個臨時目錄,可以使用 tempfile。TemporaryDirectory()
with tempfile。TemporaryDirectory() as dir_name: # ‘C:\Users\ADMINI~1\AppData\Local\Temp\tmpikl6vb6b’ print(‘Dirname is : ’, dir_name)
TemporaryFile、 NamedTemporaryFile 和 TemporaryDirectory 函式應該是處理臨時檔案目錄的最簡單的方式了,因為它們會自動處理所有的建立和清理步驟
在一個更低的級別,可以使用 mkstemp 和 mkdtemp 來建立臨時檔案和目錄
# ‘(3, ’C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\tmpbizsgx_3‘)’tempfile。mkstemp()# ‘C:\Users\ADMINI~1\AppData\Local\Temp\tmpv3jye9ql’tempfile。mkdtemp()
但是,這些函式並不會做進一步的管理了,要自己清理這些檔案
通常來講,臨時檔案在系統預設的位置被建立,比如Unix下 /var/tmp 或類似的地方
所有和臨時檔案相關的函式都允許你透過使用關鍵字引數 prefix 、 suffix 和 dir來自定義目錄以及命名規則
f_obj = tempfile。NamedTemporaryFile(prefix=‘Temp_’, suffix=‘。info’, dir=‘E:\Temp’)# ‘E:\Temp\Temp_sj35onql。info’print(f_obj。name)
4。 錯誤經歷
無