Python10日目-シリアル化と逆シリアル化


Pythonのpickleモジュールは、基本的なデータシーケンスと逆シリアル化を実装します。

  1. pickleモジュールのシリアル化操作により、プログラムで実行されているオブジェクト情報をファイルに保存して永続的に保存できます。
  2. pickleモジュールの逆シリアル化操作により、最後のプログラムで保存されたオブジェクトをファイルから作成できます。

pickleモジュールで最も一般的に使用される関数は次の
とおりです。pickle.dump(obj、file、[、protocol])は、objオブジェクトを開いたファイルにシリアル化します。

  1. obj:シリアル化するobjオブジェクト。
  2. file:ファイル名。
  3. プロトコル:シリアル化に使用されるプロトコル。この項目を省略すると、デフォルトで0になります。負の値またはHIGHEST_PROTOCOLの場合、最も高いプロトコルバージョンが使用されます。

pickle.load(file)ファイル内のオブジェクトをシリアル化して読み取ります。

  1. file:ファイル名。
import pickle

dataList = [[1, 1, 'yes'],
[1, 1, 'yes'],
[1, 0, 'no'],
[0, 1, 'no'],
[0, 1, 'no']]

dataDic = {
    
    0: [1, 2, 3, 4],
1: ('a', 'b'),
2: {
    
    'c': 'yes', 'd': 'no'}}

# 使用dump()将数据序列化到文件中
fw = open(r'.\dataFile.pkl', 'wb')

# Pickle the list using the highest protocol available.
pickle.dump(dataList, fw, -1)

# Pickle dictionary using protocol 0.
pickle.dump(dataDic, fw)
fw.close()

# 使用load()将数据从文件中序列化读出
fr = open('dataFile.pkl', 'rb')
data1 = pickle.load(fr)
print(data1)
data2 = pickle.load(fr)
print(data2)
fr.close()
# [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]
# {0: [1, 2, 3, 4], 1: ('a', 'b'), 2: {'c': 'yes', 'd': 'no'}}

理解できませんでした

練習用の質問:

  1. 漢字でドキュメントを開くと、文字が文字化けします。Pythonの組み込みの開いているファイルで文字エンコードを指定できますか?または関連する関数のみを使用できますか?
    open(file、mode = 'r'、buffering = None、 encoding = None、errors = None、newline = None、closefd = True)encoding = 'utf8'

  2. 最長の単語を見つけるプログラムを書く
    入力ドキュメント:res / test.txt

後で書く

おすすめ

転載: blog.csdn.net/weixin_48760912/article/details/114745178