Python Pickleの例

このチュートリアルでは、Pythonのピクルの例について説明します。前のチュートリアルでは、Pythonのマルチプロセッシングについて説明しました。

Pythonのピクルは、Pythonオブジェクト構造をシリアライズ化およびデシリアライズ化するために使用されます。Pythonのどのオブジェクトでもピクル化することができ、そのためディスクに保存することができます。最初に、Pythonのピクルはオブジェクトをシリアライズ化し、次にそのオブジェクトを文字ストリームに変換します。したがって、この文字ストリームには、別のPythonスクリプトでオブジェクトを再構築するために必要なすべての情報が含まれています。ドキュメントによると、ピクルモジュールは誤ったまたは悪意のある構築データに対して安全ではありませんので、信頼できないまたは認証されていないソースから受け取ったデータを決してアンピクルしないでください。

このセクションでは、Pythonのpickleを使用してデータを保存する方法を学びます。そのためには、最初にpickleモジュールをインポートする必要があります。次に、pickle.dump()関数を使用してオブジェクトデータをファイルに保存します。pickle.dump()関数は3つの引数を取ります。最初の引数は保存したいオブジェクトです。2番目の引数は、write-binary(wb)モードで開いた所望のファイルから取得したファイルオブジェクトです。3番目の引数は、キーと値の引数です。この引数はプロトコルを定義します。プロトコルには2種類あります – pickle.HIGHEST_PROTOCOLpickle.DEFAULT_PROTOCOL。pickleを使用してデータをダンプする方法を知るには、サンプルコードを参照してください。

import pickle

# ユーザー入力を取得してデータの量を取得
number_of_data = int(input('Enter the number of data : '))
data = []

# データの入力を取得
for i in range(number_of_data):
    raw = input('Enter data '+str(i)+' : ')
    data.append(raw)

# データを保存するファイルを開く
file = open('important', 'wb')

# そのファイルに情報をダンプ
pickle.dump(data, file)

# ファイルを閉じる
file.close()

次のプログラムでは、いくつかの入力を入力するように求められます。私の場合、以下のようでした。

Python Pickle load

pickledデータを取得するためには、手順は非常に簡単です。それにはpickle.load()関数を使用する必要があります。pickleのload関数の主要な引数は、読み取りバイナリ(rb)モードでファイルを開いて得られるファイルオブジェクトです。簡単ですね!以下のコードを見て、データをpickle dumpコードを使用して取得するためのコードを書きましょう。

import pickle

# pickledデータを保存したファイルを開く
file = open('important', 'rb')

# そのファイルに情報をダンプする
data = pickle.load(file)

# ファイルを閉じる
file.close()

print('Showing the pickled data:')

cnt = 0
for item in data:
    print('The data ', cnt, ' is : ', item)
    cnt += 1

出力は以下の通りです:

Showing the pickled data:
The data  0  is :  123
The data  1  is :  abc
The data  2  is :  !@#$

Python Pickleの例

I made a short video showing execution of python pickle example programs – first to store data into file and then to load and print it. As you can see that the file created by python pickle dump is a binary file and shows garbage characters in the text editor.

Python Pickleに関する重要なメモ

Python pickleモジュールに関するいくつかの重要なポイントは次のとおりです:

  1. ピクルプロトコルはPython固有であり、クロス言語互換性が保証されていません。これは、他のプログラミング言語で有用にするための情報を転送できない可能性が高いことを意味します。
  2. また、Pythonの異なるバージョン間での互換性が保証されていないため、pickleモジュールによって直列化できないPythonのすべてのデータ構造があるかもしれません。
  3. デフォルトでは、最新バージョンのpickleプロトコルが使用されますが、手動で変更しない限り、自動的に適用されます。
  4. 最後に、ドキュメントによると、ピクルモジュールは誤ったまたは悪意のある構築されたデータに対して安全ではありません。

ですので、これが Python の pickle の例に関するすべてです。理解していただけたら幸いです。その他の疑問がございましたら、コメントセクションをご利用ください。:) 参照: 公式ドキュメント

Source:
https://www.digitalocean.com/community/tutorials/python-pickle-example