可以向一個文件中寫入字符串,讀取后也是讀取字符串形式,但是不能直接向文件中寫入像列表這樣的對象,需要 pickle 等模塊才行。
pickle 模塊介紹
- pickle 模塊使用強大且有效的算法來進行序列化和反序列化。
-
序列化是指將一個對象轉換為能夠存儲在一個文件中或者在網絡上進行傳輸的字節流的過程(序列化 = 卸載對象)
-
反序列化指的是相反的過程,它是從字節流中提取出對象的過程(反序列化 = 加載對象)
注意
- 通常以 dat或者bin為文件后綴名來保存二進制數據等,不過用其它的后綴名也可,畢竟后綴名只單單是一個后綴名。
- 調用 pickle 模塊中的 load 和 dump 函數來讀寫數據。
- 調用一次dump就是寫入一個數據,調用一次load就是讀取一個數據。
- 可以使用 load 函數重復讀取直到函數拋出一個 EOFError 異常(文件末尾異常)。當拋出這個異常時,捕獲并處理它以結束文件讀取過程。
示例代碼
import pickledef main():outfile = open("data2.txt", "wb")pickle.dump(45, outfile) # 寫入一個對象pickle.dump(56.6, outfile) # 寫入一個對象pickle.dump("編程很有趣", outfile) # 寫入一個對象pickle.dump([1, 2, 3, 4], outfile) # 寫入一個對象outfile.close()infile = open("data2.txt", "rb")while True:try:data = pickle.load(infile)print(type(data), ": ", data)except EOFError:print("已經讀取完畢")breakinfile.close()main()
運行結果
<class 'int'> : 45
<class 'float'> : 56.6
<class 'str'> : 編程很有趣
<class 'list'> : [1, 2, 3, 4]
已經讀取完畢
end