<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Python
的tempfile
模組是用來建立臨時檔案或者資料夾的跨平臺工具。在大型資料處理專案中,有的處理結果是不需要向用戶最終展示的,但是它們的應用又是貫穿專案始終的,在這種情況下,我們就需要使用tempfile模組來解決這種問題。
tempfile模組主要包括三類函數:
TemporaryFile
、NamedTemporaryFile
、SpooledTemporaryFile
和TemporaryDirectory
,這四個高階介面提供了自動清除功能並且可以作為上下文管理器使用。函數名 | 描述 |
---|---|
TemporaryFile和NamedTemporaryFile | 高階臨時檔案物件建立函數 |
SpooledTemporaryFile | 假離線模式高階臨時檔案物件建立函數 |
TemporaryDirectory | 高階臨時目錄建立函數 |
mkstemp()
和mkdtemp()
,用於生成臨時底層的臨時檔案和資料夾,在使用完它們的時候需要手動清除。函數名 | 描述 |
---|---|
mkstemp() | 底層臨時檔案建立函數 |
mkdtemp() | 底層臨時目錄建立函數 |
tempfile
模組還有一些針對檔案、資料夾屬性的操作函數gettempdir()
、gettempdirb()
、gettempprefix
、gettempprefixb
。函數名 | 描述 |
---|---|
gettempdir() | 以文字格式返回臨時資料夾名函數 |
gettempdirb() | 以二進位制格式返回臨時資料夾名函數 |
gettempprefix | 以文字格式返回臨時檔名字首 |
gettempprefixb | 以二進位制格式返回臨時檔名字首 |
tempfile
的所有使用者可呼叫函數和建構函式都帶有額外引數,通過這些引數可以實現對臨時檔案目錄和位置的管理。此模組會在共用臨時目錄中安全地建立臨時檔案,並給建立臨時文隨機起個名。
高階臨時檔案物件建立函數:Temporaryfile和NamedTemporaryFile
Temporaryfile
函數返回一個類檔案物件用作臨時儲存區,它使用與mkstemp()
函數相同規則的安全重建檔案模式,它一關閉就會被銷燬(包括針對垃圾收集物件的隱式關閉)。需要注意的是,在Unix系統環境,檔案的目錄要麼根本不建立,要麼在檔案建立後立即刪除。也就是說,程式碼不會依賴於此函數建立的臨時檔案,包括它們的名稱,這也是這個函數與NamedTemporaryfile函數的不同之處。
TemporaryFile函數的呼叫格式為:
TemporaryFile(mode='w+b', buffering=-1, encoding=None, newline=None, suffix=None, prefix=None, *, error=None)
函數引數選項:
下面給出一個典型例子:
import tempfile # 下面建立一個臨時檔案並寫入一些資料 fp = tempfile.TemporaryFile() fp.write(bb'Hello Xiaoliang!') # 讀取資料 fp.seek(0); fp.read()
另外,該函數生成的物件可以用作上下文管理器(參見範例)。完成上下文管理或銷燬檔案物件後,臨時檔案將從檔案系統中刪除。
import tempfile with tempfile.TemporaryFile() as fp: fp.write(b'Hello Xiaoliang!') fp.seek(0) fp.read()
除了NamedTemporaryfile()
函數實現了在檔案系統中只有一個可見名之外,其作用與TemporaryFile()
功能完全相同。執行完該函數後,我們可以從返回的類檔案物件的name屬性中檢索檔名稱。在Unix系統上,在命名的臨時檔案處於開啟狀態時,可以使用該名稱開啟生成的檔案。
NamedTemporaryFile函數的呼叫格式與TemporaryFile函數的非常相似,唯一不同的是具有了一個delete引數:
NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None, newline=None, suffix=None, prefix=None, dir=Nonde, delete=True, *, error=None)
delete引數選項:如果該引數為True(預設),則檔案一關閉則被刪除。返回的物件始終是一個類檔案物件,其檔案屬性是底層的真實檔案物件。也就是說,這個類檔案物件可以在with上下文管理中使用,就像普通檔案一樣。
SPOOL技術簡介:
SPOOL是Simultaneous Peripheral Operation On-Line
(即外部裝置聯機並行操作)的縮寫,它是關於慢速字元裝置如何與計算機主機交換資訊的一種技術,通常稱為“假離線技術”。其實,嚴格意義上說,SPOOL系統既不同於離線方式,也不同於直接耦合方式,SPOOL技術實際上是一種外圍裝置同時聯機操作技術,又稱為排隊轉儲技術。它在輸入和輸出之間增加了“輸入井”和“輸出井”的排隊轉儲環節,以消除使用者的“聯機”等待時間。
SpooledTemporaryFile()
函數除了資料會在記憶體中進行假離線外,與TemporaryFile()
完全相同。直到檔案大小超過max_size或直到呼叫檔案的fileno()方法,此時使用與TemporaryFile()一樣的操作,將內容寫入磁碟。
該函數同樣返回一個類檔案物件,其_file屬性可以是io.BytesIO(二進位制模式)、io.TextIOWrapper(文字模式)物件或真實的檔案物件(呼叫roller()函數)。同樣的,這個類檔案物件可以在with上下文管理中使用,就像普通檔案一樣。
該函數還有一個額外的方法rollover(),它使建立的檔案滾尋磁碟上的內容,而不管其大小。SpooledTemporaryFile函數的呼叫格式與TemporaryFile()
函數一樣,這裡就不介紹了。
TemporaryDirectory
函數使用與mkdtemp()相同的規則安全地建立臨時目錄。生成的物件可以用作上下文管理器(這裡給出範例)。完成上下文或銷燬臨時目錄物件後,新建立的臨時目錄及其所有內容將從檔案系統中刪除。其呼叫格式如下所示:
TemporaryDirectory(suffix=None, prefix=None, dir=None)
呼叫該函數後,建立的目錄名可以從返回物件的name
屬性中檢索到。當返回的物件作為上下文管理器時,該名稱將被分配給with語句中as子句的目標。另外,可以通過呼叫cleanup()方法顯式清理目標。
底層臨時檔案建立函數mkstemp()
mkstemp()
函數以儘可能安全的方式建立臨時檔案,與TemporaryFile()函數不同,使用者需要負責臨時檔案的刪除。其呼叫格式如下所示:
mkstemp(suffix=None, prefix=None, dir=None, text=False)
函數引數選項:
mkstemp()
返回一個元組,該元組包含一個用於開啟檔案的作業系統級別(OS-leve)控制程式碼(有os.open()函數返回)和該檔案絕對路徑名。
底層臨時目錄建立函數mkdtemp()
mkdtemp()
函數以儘可能安全的方式建立臨時目錄。只有通過使用者ID才能讀取、寫入和搜尋目錄,同時使用者負責刪除臨時目錄及其內容。其呼叫格式和引數與mkstemp()相同,這裡就不展開介紹了。注意,mkdtemp()函數只返回新建目錄的絕對路徑。
gettempdir()
返回存放臨時檔案的資料夾名字,該函數的返回值是tempfile
內的全域性變數,也就是說,gettempdir()返回的資料夾名將作為tempfile
模組中的所有函數dir引數的預設值。
Python內部搜尋一個標準目錄列表,使用者可以在其中建立檔案的目錄:
Windows系統,目錄為:C:TEMP, C:TMP, TEMP, and TMP;
其他系統,目錄為:/tmp, /var/tmp, and /usr/tmp。
另外,還有一個與gettempdir()作用相同,只是返回的格式二進位制的函數gettempdirb()。
gettempprefix
以文字格式返回建立的臨時檔案的字首;gettempprefixb
以二進位制格式返回建立的臨時檔案的字首。
到此這篇關於Python臨時檔案建立之tempfile模組介紹的文章就介紹到這了,更多相關臨時檔案與tempfile模組內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45