最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python臨時文件創(chuàng)建之tempfile模塊介紹

 更新時間:2022年03月20日 16:42:28   作者:嵌入式技術(shù)  
這篇文章主要介紹了Python臨時文件創(chuàng)建之tempfile模塊,Python的tempfile模塊是用來創(chuàng)建臨時文件或者文件夾的跨平臺工具,下面關(guān)于模塊簡單介紹需要的小伙伴可以參考一下

一、tempfile模塊簡介

1、tempfile模塊應(yīng)用場景

Pythontempfile模塊是用來創(chuàng)建臨時文件或者文件夾的跨平臺工具。在大型數(shù)據(jù)處理項目中,有的處理結(jié)果是不需要向用戶最終展示的,但是它們的應(yīng)用又是貫穿項目始終的,在這種情況下,我們就需要使用tempfile模塊來解決這種問題。

2、tempfile模塊的方法

tempfile模塊主要包括三類函數(shù):

  • (1)四個高級接口:TemporaryFile、NamedTemporaryFile、SpooledTemporaryFileTemporaryDirectory,這四個高級接口提供了自動清除功能并且可以作為上下文管理器使用。
函數(shù)名描述
TemporaryFile和NamedTemporaryFile高級臨時文件對象創(chuàng)建函數(shù)
SpooledTemporaryFile假脫機模式高級臨時文件對象創(chuàng)建函數(shù)
TemporaryDirectory高級臨時目錄創(chuàng)建函數(shù)
  • (2)另外,兩個底層函數(shù)mkstemp()mkdtemp(),用于生成臨時底層的臨時文件和文件夾,在使用完它們的時候需要手動清除。
函數(shù)名描述
mkstemp()底層臨時文件創(chuàng)建函數(shù)
mkdtemp()底層臨時目錄創(chuàng)建函數(shù)
  • (3)最后,tempfile模塊還有一些針對文件、文件夾屬性的操作函數(shù)gettempdir()、gettempdirb()、gettempprefix、gettempprefixb
函數(shù)名描述
gettempdir()以文本格式返回臨時文件夾名函數(shù)
gettempdirb()以二進制格式返回臨時文件夾名函數(shù)
gettempprefix以文本格式返回臨時文件名前綴
gettempprefixb以二進制格式返回臨時文件名前綴

tempfile的所有用戶可調(diào)用函數(shù)和構(gòu)造函數(shù)都帶有額外參數(shù),通過這些參數(shù)可以實現(xiàn)對臨時文件目錄和位置的管理。此模塊會在共享臨時目錄中安全地創(chuàng)建臨時文件,并給創(chuàng)建臨時文隨機起個名。

二、tempfile模塊主要函數(shù)介紹

高級臨時文件對象創(chuàng)建函數(shù):Temporaryfile和NamedTemporaryFile

1、Temporaryfile函數(shù)

Temporaryfile函數(shù)返回一個類文件對象用作臨時存儲區(qū),它使用與mkstemp()函數(shù)相同規(guī)則的安全重建文件模式,它一關(guān)閉就會被銷毀(包括針對垃圾收集對象的隱式關(guān)閉)。需要注意的是,在Unix系統(tǒng)環(huán)境,文件的目錄要么根本不創(chuàng)建,要么在文件創(chuàng)建后立即刪除。也就是說,代碼不會依賴于此函數(shù)創(chuàng)建的臨時文件,包括它們的名稱,這也是這個函數(shù)與NamedTemporaryfile函數(shù)的不同之處。

TemporaryFile函數(shù)的調(diào)用格式為:

TemporaryFile(mode='w+b', buffering=-1, encoding=None,
?? ?newline=None, suffix=None, prefix=None, *, error=None)

函數(shù)參數(shù)選項:

  • (1)mode參數(shù):默認為w+r,以便文件在被創(chuàng)建時可以執(zhí)行讀寫操作。
  • (2)buffering、encoding、errors和newline參數(shù):用于解釋open()函數(shù)行為。
  • (3) dir、prefix和suffix參數(shù):與mkstemp()具有相同的含義和默認設(shè)置。

下面給出一個典型例子:

import tempfile

# 下面創(chuàng)建一個臨時文件并寫入一些數(shù)據(jù)
fp = tempfile.TemporaryFile()
fp.write(bb'Hello Xiaoliang!')

# 讀取數(shù)據(jù)
fp.seek(0); ?fp.read()

另外,該函數(shù)生成的對象可以用作上下文管理器(參見示例)。完成上下文管理或銷毀文件對象后,臨時文件將從文件系統(tǒng)中刪除。

import tempfile

with tempfile.TemporaryFile() as fp:
?? ?fp.write(b'Hello Xiaoliang!')
?? ?fp.seek(0)
?? ?fp.read()

2、NamedTemporaryfile函數(shù)

除了NamedTemporaryfile()函數(shù)實現(xiàn)了在文件系統(tǒng)中只有一個可見名之外,其作用與TemporaryFile()功能完全相同。執(zhí)行完該函數(shù)后,我們可以從返回的類文件對象的name屬性中檢索文件名稱。在Unix系統(tǒng)上,在命名的臨時文件處于打開狀態(tài)時,可以使用該名稱打開生成的文件。

NamedTemporaryFile函數(shù)的調(diào)用格式與TemporaryFile函數(shù)的非常相似,唯一不同的是具有了一個delete參數(shù):

NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None,
?? ?newline=None, suffix=None, prefix=None, dir=Nonde, delete=True,
?? ?*, error=None)

delete參數(shù)選項:如果該參數(shù)為True(默認),則文件一關(guān)閉則被刪除。返回的對象始終是一個類文件對象,其文件屬性是底層的真實文件對象。也就是說,這個類文件對象可以在with上下文管理中使用,就像普通文件一樣。

3、假脫機模式高級臨時文件對象創(chuàng)建函數(shù):SpooledTemporaryfile

SPOOL技術(shù)簡介:

SPOOL是Simultaneous Peripheral Operation On-Line
(即外部設(shè)備聯(lián)機并行操作)的縮寫,它是關(guān)于慢速字符設(shè)備如何與計算機主機交換信息的一種技術(shù),通常稱為“假脫機技術(shù)”。其實,嚴格意義上說,SPOOL系統(tǒng)既不同于脫機方式,也不同于直接耦合方式,SPOOL技術(shù)實際上是一種外圍設(shè)備同時聯(lián)機操作技術(shù),又稱為排隊轉(zhuǎn)儲技術(shù)。它在輸入和輸出之間增加了“輸入井”和“輸出井”的排隊轉(zhuǎn)儲環(huán)節(jié),以消除用戶的“聯(lián)機”等待時間。

SpooledTemporaryFile()函數(shù)除了數(shù)據(jù)會在內(nèi)存中進行假脫機外,與TemporaryFile()完全相同。直到文件大小超過max_size或直到調(diào)用文件的fileno()方法,此時使用與TemporaryFile()一樣的操作,將內(nèi)容寫入磁盤。

該函數(shù)同樣返回一個類文件對象,其_file屬性可以是io.BytesIO(二進制模式)、io.TextIOWrapper(文本模式)對象或真實的文件對象(調(diào)用roller()函數(shù))。同樣的,這個類文件對象可以在with上下文管理中使用,就像普通文件一樣。

該函數(shù)還有一個額外的方法rollover(),它使創(chuàng)建的文件滾尋磁盤上的內(nèi)容,而不管其大小。SpooledTemporaryFile函數(shù)的調(diào)用格式與TemporaryFile()函數(shù)一樣,這里就不介紹了。

4、高級臨時目錄創(chuàng)建函數(shù):TemporaryDirectory

TemporaryDirectory函數(shù)使用與mkdtemp()相同的規(guī)則安全地創(chuàng)建臨時目錄。生成的對象可以用作上下文管理器(這里給出示例)。完成上下文或銷毀臨時目錄對象后,新創(chuàng)建的臨時目錄及其所有內(nèi)容將從文件系統(tǒng)中刪除。其調(diào)用格式如下所示:

TemporaryDirectory(suffix=None, prefix=None, dir=None)

調(diào)用該函數(shù)后,創(chuàng)建的目錄名可以從返回對象的name屬性中檢索到。當(dāng)返回的對象作為上下文管理器時,該名稱將被分配給with語句中as子句的目標。另外,可以通過調(diào)用cleanup()方法顯式清理目標。

5、底層臨時文件/目錄創(chuàng)建函數(shù):mkstemp和mkdtemp

底層臨時文件創(chuàng)建函數(shù)mkstemp()

mkstemp()函數(shù)以盡可能安全的方式創(chuàng)建臨時文件,與TemporaryFile()函數(shù)不同,用戶需要負責(zé)臨時文件的刪除。其調(diào)用格式如下所示:

mkstemp(suffix=None, prefix=None, dir=None, text=False)

函數(shù)參數(shù)選項:

  • (1)suffix:文件后綴,默認為None。如果不是None,文件名將以設(shè)置的后綴結(jié)尾。注意,mkstemp()函數(shù)不會在文件名和后綴之間加一個點,如果需要可以自行添加。
  • (2)prefix:文件前綴,默認為None。如果不是None,文件以該前綴為開頭;否則使用默認前綴,默認的前綴是由gettempprefix()或gettempprefixb()的返回值確定。
  • (3)dir:文件創(chuàng)建的目錄,默認為None,如果不是None,則使用默認目錄;默認目錄是從所使用的系統(tǒng)列表中選擇的,但是用戶可以通過設(shè)置TMPDIR、TEMP或TMP環(huán)境變量來控制目錄位置。
  • (4)text:文本類型,默認為False,即以二進制模式打開。如果為true,則以文本格式打開。

mkstemp()返回一個元組,該元組包含一個用于打開文件的操作系統(tǒng)級別(OS-leve)句柄(有os.open()函數(shù)返回)和該文件絕對路徑名。

底層臨時目錄創(chuàng)建函數(shù)mkdtemp()

mkdtemp()函數(shù)以盡可能安全的方式創(chuàng)建臨時目錄。只有通過用戶ID才能讀取、寫入和搜索目錄,同時用戶負責(zé)刪除臨時目錄及其內(nèi)容。其調(diào)用格式和參數(shù)與mkstemp()相同,這里就不展開介紹了。注意,mkdtemp()函數(shù)只返回新建目錄的絕對路徑。

三、tempfile模塊的文件/文件夾屬性操作函數(shù)

1、返回臨時文件夾名函數(shù):gettempdir和gettempdirb

gettempdir()返回存放臨時文件的文件夾名字,該函數(shù)的返回值是tempfile內(nèi)的全局變量,也就是說,gettempdir()返回的文件夾名將作為tempfile模塊中的所有函數(shù)dir參數(shù)的默認值。

Python內(nèi)部搜索一個標準目錄列表,用戶可以在其中創(chuàng)建文件的目錄:

  • (1)由TMPDIR環(huán)境變量命名的目錄;
  • (2)由TEMP環(huán)境變量命名的目錄;
  • (3)由TMP環(huán)境變量命名的目錄。
  • (4)不同平臺特定的位置:

Windows系統(tǒng),目錄為:C:\TEMP, C:\TMP, \TEMP, and \TMP;
其他系統(tǒng),目錄為:/tmp, /var/tmp, and /usr/tmp。

  • (5)當(dāng)前工作目錄。

另外,還有一個與gettempdir()作用相同,只是返回的格式二進制的函數(shù)gettempdirb()。

2、返回臨時文件前綴函數(shù):gettempprefix和gettempprefix

gettempprefix以文本格式返回創(chuàng)建的臨時文件的前綴;gettempprefixb以二進制格式返回創(chuàng)建的臨時文件的前綴。

到此這篇關(guān)于Python臨時文件創(chuàng)建之tempfile模塊介紹的文章就介紹到這了,更多相關(guān)臨時文件與tempfile模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python光學(xué)仿真面向?qū)ο蠊鈱W(xué)元件類的實現(xiàn)

    python光學(xué)仿真面向?qū)ο蠊鈱W(xué)元件類的實現(xiàn)

    這篇文章主要為大家介紹了python光學(xué)仿真面向?qū)ο蠊鈱W(xué)元件類的實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • Python設(shè)計模式之裝飾模式實例詳解

    Python設(shè)計模式之裝飾模式實例詳解

    這篇文章主要介紹了Python設(shè)計模式之裝飾模式,結(jié)合實例形式詳細分析了裝飾模式的概念、原理并結(jié)合Python實例形式分析了裝飾模式的相關(guān)使用技巧,需要的朋友可以參考下
    2019-01-01
  • 舉例介紹Python中的25個隱藏特性

    舉例介紹Python中的25個隱藏特性

    這篇文章主要介紹了一些Python中的隱藏特性,從stackoverflow的人氣問題回答中整理而來,主要以代碼實際解釋說明,需要的朋友可以參考下
    2015-03-03
  • Python requests模塊實例用法

    Python requests模塊實例用法

    在本篇文章中小編給大家分享了關(guān)于Python requests模塊實例用法,有需要的朋友們學(xué)習(xí)參考下。
    2019-02-02
  • 解決pandas 作圖無法顯示中文的問題

    解決pandas 作圖無法顯示中文的問題

    今天小編就為大家分享一篇解決pandas 作圖無法顯示中文的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python 列表,數(shù)組,矩陣兩兩轉(zhuǎn)換tolist()的實例

    python 列表,數(shù)組,矩陣兩兩轉(zhuǎn)換tolist()的實例

    下面小編就為大家分享一篇python 列表,數(shù)組,矩陣兩兩轉(zhuǎn)換tolist()的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • scrapy爬蟲遇到j(luò)s動態(tài)渲染問題

    scrapy爬蟲遇到j(luò)s動態(tài)渲染問題

    本文主要介紹了scrapy爬蟲遇到j(luò)s動態(tài)渲染問題,通過js渲染出來的動態(tài)網(wǎng)頁的內(nèi)容與網(wǎng)頁文件內(nèi)容是不一樣的,本文就來解決一下這些問題,感興趣的可以了解一下
    2022-05-05
  • python使用pymysql操作MySQL錯誤代碼1054和1064處理方式

    python使用pymysql操作MySQL錯誤代碼1054和1064處理方式

    這篇文章主要介紹了python使用pymysql操作MySQL錯誤代碼1054和1064處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Python的matplotlib繪圖如何修改背景顏色的實現(xiàn)

    Python的matplotlib繪圖如何修改背景顏色的實現(xiàn)

    這篇文章主要介紹了Python的matplotlib繪圖如何修改背景顏色的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python 階乘詳解

    Python 階乘詳解

    這篇文章主要介紹了詳解用python的階乘,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10

最新評論

扶沟县| 鄄城县| 香港 | 门头沟区| 南涧| 松原市| 建湖县| 南江县| 青河县| 洛浦县| 铁力市| 长白| 天台县| 突泉县| 墨脱县| 民丰县| 同江市| 扶余县| 绥棱县| 错那县| 卓尼县| 永修县| 丹江口市| 义马市| 龙陵县| 湖州市| 永吉县| 天水市| 仙居县| 龙游县| 虎林市| 汤原县| 沂源县| 永登县| 敦煌市| 绩溪县| 徐水县| 图木舒克市| 汤阴县| 松溪县| 瓦房店市|