Python3使用pickle模塊讀寫二進(jìn)制文件
在本文中,我們將深入探討如何使用Python中的pickle模塊進(jìn)行讀寫二進(jìn)制文件的操作。Python的文件I/O通常只支持文本類型的讀寫,即使以二進(jìn)制方式打開文件也是如此。若需寫入二進(jìn)制數(shù)據(jù),則必須
在本文中,我們將深入探討如何使用Python中的pickle模塊進(jìn)行讀寫二進(jìn)制文件的操作。Python的文件I/O通常只支持文本類型的讀寫,即使以二進(jìn)制方式打開文件也是如此。若需寫入二進(jìn)制數(shù)據(jù),則必須借助pickle模塊或struct模塊。pickle模塊可以直接序列化幾乎所有Python對象,但需要注意的是,其他編程語言要讀取經(jīng)過pickle序列化的文件,則需要遵循相同的協(xié)議。如果希望Python與其他語言的程序進(jìn)行二進(jìn)制文件交互,建議考慮使用struct模塊。喜歡本教程請投上您寶貴的一票,謝謝支持!同時(shí)也歡迎關(guān)注我,每天都有新鮮干貨教程哦!
步驟一:新建Python源代碼文件
1. 啟動(dòng)IDLE程序(確保已安裝Python3),點(diǎn)擊界面菜單中的“File > New File”,創(chuàng)建一個(gè)空白的Python源代碼文件。
2. 在新打開的Python編輯器窗口中,按下“Ctrl S”,將文件命名為“pickle_file”并保存到“D: est”目錄下。
3. 在“pickle_”編輯窗口中,定義3個(gè)列表,分別保存3條學(xué)生信息。然后,定義一個(gè)表示文件路徑的格式化字符串,該字符串可以自定義文件擴(kuò)展名。
步驟二:使用write()函數(shù)寫入數(shù)據(jù)
4. 繼續(xù)編輯源代碼,使用write()函數(shù)將“zsInfo”中的四個(gè)元素寫入到“pickle1.dat”文件中(如對try..except和with不熟悉,可參考“[Python3]寫入文本文件[TZZ]”)。運(yùn)行代碼時(shí),打開二進(jìn)制文件只需指定模式為“wb”即可。write()方法只支持類byte格式的數(shù)據(jù),因此需使用encode()方法轉(zhuǎn)換字符串為bytes類型或者使用bytes()構(gòu)造一個(gè)bytes對象。
文件驗(yàn)證與pickle模塊基本用法
5. 在“D: est”目錄下,使用記事本打開創(chuàng)建的“pickle1.dat”文件,會(huì)發(fā)現(xiàn)盡管以二進(jìn)制方式打開并寫入內(nèi)容,實(shí)際上它仍然是文本文件。這表明Python的write()方法實(shí)際上寫入的還是字符串,即使類型是bytes。
6. 為了以二進(jìn)制方式保存數(shù)據(jù)到文件,Python提供了pickle模塊。通過dump()方法可將Python對象以二進(jìn)制形式寫入,而load()方法可讀取通過dump()寫入的對象。
使用pickle模塊寫入與讀取數(shù)據(jù)
7. 掌握了pickle模塊的基本用法后,繼續(xù)向源代碼中添加使用pickle模塊的dump()方法寫入學(xué)生信息的代碼,并運(yùn)行。若在調(diào)用dump()保存數(shù)據(jù)時(shí)出現(xiàn)錯(cuò)誤,會(huì)拋出pickle.PickleError異常。
8. 再次進(jìn)入“D: est”目錄,使用記事本打開新創(chuàng)建的“pickle2.dat”文件,這次文件內(nèi)容顯示為亂碼,這正是二進(jìn)制寫入內(nèi)容的特征。證明一切順利進(jìn)行。
讀取pickle2.dat文件并總結(jié)
9. 繼續(xù)向源代碼中添加使用pickle.load()方法讀取“pickle2.dat”文件的代碼,隨后運(yùn)行。如果代碼正確,Shell窗口中將打印出學(xué)生信息。通過與定義的學(xué)生信息核對,可以確認(rèn)讀取無誤。
10. 通過pickle模塊寫入的二進(jìn)制文件,只能通過pickle模塊讀取,這是其限制。若需與其他編程語言的程序通過文件交互,需要借助struct模塊。接下來,我們將介紹struct模塊的用法。祝學(xué)習(xí)愉快!