日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python tempfile 创建临时目录

發布時間:2025/3/20 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python tempfile 创建临时目录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、tempfile介紹

該模塊創建臨時文件和目錄。它適用于所有支持的平臺。TemporaryFileNamedTemporaryFileTemporaryDirectory,和SpooledTemporaryFile是高級接口,其提供自動清理和可被用作上下文管理器。mkstemp()并且?mkdtemp()是需要手動清理的低級功能。

所有用戶可調用的函數和構造函數都采用其他參數,這些參數允許直接控制臨時文件和目錄的位置和名稱。此模塊使用的文件名包括一串隨機字符,允許在共享臨時目錄中安全地創建這些文件。為了保持向后兼容性,參數順序有些奇怪;?為清晰起見,建議使用關鍵字參數。

?

二、創建臨時文件

1、TemporaryFile

該模塊定義以下用戶可調用項:

tempfile.TemporaryFile(mode ='w + b',buffering = None,encoding = None,newline = None,suffix = None,prefix = None,dir = None?

返回一個類似文件的對象,可以用作臨時存儲區域。使用與之相同的規則安全地創建文件mkstemp()它將在關閉后立即銷毀(包括在對象被垃圾收集時隱式關閉)。在Unix下,文件的目錄條目根本不是創建的,或者在創建文件后立即刪除。其他平臺不支持此功能;?您的代碼不應該依賴于使用此函數創建的臨時文件,該文件在文件系統中具有或不具有可見名稱。

生成的對象可以用作上下文管理器。完成文件對象的上下文或銷毀后,臨時文件將從文件系統中刪除。

所述模式參數默認為'w+b'使得所創建的文件可以被讀取并且沒有被關閉寫入。使用二進制模式,使其在所有平臺上的行為一致,而不考慮存儲的數據。?緩沖,編碼和換行符被解釋為?open()

該目錄,prefix和suffix的參數具有相同的含義和缺省值與mkstemp()

返回的對象是POSIX平臺上的真實文件對象。在其他平臺上,它是一個類文件對象,其file屬性是底層的真實文件對象。

os.O_TMPFILE如果該標志可用且有效,則使用該標志(特定于Linux,需要Linux內核3.11或更高版本)。

版本3.5中已更改:os.O_TMPFILE現在使用該標志(如果可用)。

示例:

from tempfile import TemporaryFile ''' TemporaryFile類的構造方法,其返回的還是一個文件對象。但這個文件對象特殊的地方在于 1. 對應的文件沒有文件名,對除了本程序之外的程序不可見 2. 在被關閉的同時被刪除 ''' temp = TemporaryFile(dir=r'D:\test') # 創建一個臨時文件對象(類似文件句柄) temp.write(b'hello world') # 向臨時文件中寫入內容(bytes類型)# 讀取臨時文件的內容 temp.seek(0) # 從頭讀取,和一般文件對象不同,seek方法的執行不能少 print(temp.read())temp.close() # 關閉文件的同時刪除文件

?

2、NamedTemporaryFile

tempfile.NamedTemporaryFile(mode ='w + b',buffering = None,encoding = None,newline = None,suffix = None,prefix = None,dir = None,delete = True?

NamedTemporaryFile 的運行方式與 TemporaryFile 完全相同。不同之處在于,NamedTemporaryFile?初始化時加上了delete參數,默認值為True。當此參數為True時和TemporaryFile類完全一致。如果是False,那么臨時文件對象在被關閉時不會刪除。因此可以在下面的代碼中通過同樣的對象再次打開。可以從name返回的類文件對象的屬性中檢索該名稱。

3、SpooledTemporaryFile

tempfile.SpooledTemporaryFile(max_size = 0,mode ='w + b',buffering = None,encoding = None,newline = None,suffix = None,prefix = None,dir = None?

此函數的運行方式與此完全相同TemporaryFile(),只是數據在內存中假脫機,直到文件大小超過max_size,或者直到fileno()調用文件的方法為止,此時內容將寫入磁盤,操作繼續進行?TemporaryFile()

生成的文件有一個額外的方法,rollover()使文件無論其大小如何都會轉到磁盤文件。

返回的對象是一個類文件對象,其_file屬性是一個io.BytesIOio.StringIO對象(取決于是否指定了二進制或文本模式)或真正的文件對象,具體取決于是否rollover()已被調用。類似文件的對象可以在with語句中使用,就像普通文件一樣。

在3.3版中更改:?truncate方法現在接受一個size參數。

?

4、mktemp

python早期創建臨時文件的方法是:

1.首先使用mktemp()函數生成文件名(包涵文件路徑)

2.然后使用此名稱創建文件。

3.示例

import tempfile tmp_path = tempfile.mktemp(dir=r"D:\test") # 指定生成的文件目錄:D:\test目錄下 print(tmp_path) # D:\test\tmpq44i5ytv ---- tmpq44i5ytv是隨機生成的文件名 with open(tmp_path, 'w+') as f: # mktemp只生成路徑,并沒有生成文件,需手動調用open創建f.write('Hello world')# f.flush()

?

5、mkstemp

tempfile.mkstemp(suffix = None,prefix = None,dir = None,text = False?

mkstemp方法用于創建一個臨時文件。該方法僅僅用于創建臨時文件,調用tempfile.mkstemp函數后,返回包含兩個元素的元組,第一個元素指示操作該臨時文件的安全級別,第二個元素指示該臨時文件的路徑。參數suffix和prefix分別表示臨時文件名稱的suffix和prefix;dir指定了臨時文件所在的目錄,如果沒有指定目錄,將根據系統環境變量TMPDIR,?TEMP或者TMP的設置來保存臨時文件;參數text指定了是否以文本的形式來操作文件,默認為False,表示以二進制的形式來操作文件。

import tempfile tmp_f = tempfile.mkstemp(dir=r"D:\test") print(tmp_f) # (3, 'D:\\test\\tmp98sbordm')-->3:安全級別,D:\\test\\tmp98sbordm:文件所在目錄 fd = tmp_f[1]with open(fd, 'w+') as f: # mkstemp生成了文件,但是文件內容為空,需手動open寫入數據f.write('Hello world')

?

三、創建臨時目錄

1、TemporaryDirectory

tempfile.TemporaryDirectory(suffix=None,prefix=None,dir =None

此功能使用與之相同的規則安全地創建臨時目錄mkdtemp()。生成的對象可以用作上下文管理器。完成上下文或銷毀臨時目錄對象后,將從文件系統中刪除新創建的臨時目錄及其所有內容。

可以從name返回的對象的屬性中檢索目錄名稱。當返回的對象用作上下文管理器時,?name將as在with語句中將該子句的目標分配給該子句的目標(如果有)。

可以通過調用該cleanup()方法顯式清除該目錄?。

版本3.2中的新功能。

?

2、mkdtemp

tempfile.mkdtemp(suffix=None,prefix=None,dir =None

盡可能以最安全的方式創建臨時目錄。目錄的創建中沒有競爭條件。該目錄只能通過創建用戶ID進行讀取,寫入和搜索。

用戶mkdtemp()負責在完成后刪除臨時目錄及其內容。

該prefix,suffix和DIR參數是一樣的?mkstemp()

mkdtemp()?返回新目錄的絕對路徑名。

在版本3.5中更改:suffix,prefix和目錄現在可以以字節為單位提供,以獲取字節返回值。在此之前,只允許str。?suffix和prefix現在接受并默認為None使用適當的默認值。

?

3、gettempdir

tempfile.gettempdir

用于返回保存臨時文件的文件夾路徑。這定義了此模塊中所有函數的dir參數的默認值。

Python搜索標準目錄列表以找到調用用戶可以創建文件的目錄。列表是:

  • 由...命名的目錄?TMPDIR?環境變量。

  • 由...命名的目錄?TEMP?環境變量。

  • 由...命名的目錄?TMP?環境變量。

  • 特定于平臺的位置:

    • 在Windows中,目錄C:\TEMPC:\TMP,?\TEMP,并\TMP按此順序。

    • 在所有其他平臺,目錄/tmp/var/tmp以及?/usr/tmp在這個順序。

  • 作為最后的手段,當前的工作目錄。

  • 緩存此搜索的結果,請參閱tempdir下面的說明?。

    4、gettempdirb

    tempfile.gettempdirb

    gettempdir()但相同,返回值以字節為單位。

    版本3.5中的新功能。

    5、gettempprefix

    tempfile.gettempprefix

    返回用于創建臨時文件的文件名prefix。這不包含目錄組件。

    6、gettempprefixb

    tempfile.gettempprefixb

    gettempprefix()但相同,返回值以字節為單位。

    版本3.5中的新功能。

    該模塊使用全局變量來存儲用于返回的臨時文件的目錄名稱gettempdir()。它可以直接設置以覆蓋選擇過程,但不鼓勵這樣做。此模塊中的所有函數都使用dir參數,該參數可用于指定目錄,這是推薦的方法。

    ?

    7、tempdir

    tempfile.tempdir

    當設置為其他值時None,此變量定義此模塊中定義的函數的dir參數的默認值。

    如果tempdirNone(默認值)任何上述函數的調用,除非gettempprefix()它按照中描述的算法初始化gettempdir()

    ?

    四、示例

    以下是tempfile模塊典型用法的一些示例:

    import tempfile# 1.創建一個臨時文件并向其中寫入一些數據 fp = tempfile.TemporaryFile() fp.write(b'Hello world!')# 2.從文件中讀取數據 fp.seek(0) fp.read() # b'Hello world!'# 3.關閉文件,它將被刪除 fp.close()# 4.使用上下文管理器創建臨時文件 with tempfile.TemporaryFile() as fp:fp.write(b'Hello world!')fp.seek(0)fp.read() # b'Hello world!' # 文件現在已關閉并刪除# 6.使用上下文管理器創建臨時目錄 with tempfile.TemporaryDirectory() as tmpdirname:print('created temporary directory', tmpdirname) # 目錄和內容已被刪除

    ?

    ?

    ?

    轉載于:https://www.cnblogs.com/Zzbj/p/11204539.html

    總結

    以上是生活随笔為你收集整理的python tempfile 创建临时目录的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。