永続化モジュール: データを永続化します。
pickle モジュールは、カスタム クラスを含むさまざまなデータを永続化できる Python 固有の永続化モジュールであり、Python 自体で複雑なデータを保存するのに適しています。
ただし、永続化された文字列は読み取ることができず、Python 環境でのみ使用でき、他の言語とのデータ交換には使用できません。
Python オブジェクトを直接保存する最初に文字列に変換して保存することなく、また基礎となるファイル アクセス操作を使用せずに、バイナリ ファイルに直接書き込みます。 pickle モジュールは、Python 言語に固有のバイナリ形式を作成します。ユーザーはファイルの詳細を考慮する必要はありません。オブジェクトの読み取りおよび書き込み操作を完了するのに役立ちます。 pickle を使用すると、ファイルを開いてデータ形式を変換して書き込むよりも多くのコード行を節約できます。
pickle での dumps() および loads() 操作はバイトです。 dump() と lload() を使用しながら型を読み取ります。ファイルを書き込む場合は、rb または wb モードを使用します。これは、バイト型データのみを受信することを意味します。
Python データを pickle 形式のファイルに変換して保存します。
with open('data.pickle', 'wb') as f: pickle.dump(data, f)
上で保存したデータ ファイルをテキスト エディタで開くと、すべて判読できないエンコードになっていることがわかります。
#操作結果:
将Python数据转换为pickle格式的bytes字串。
import pickle dic = {"k1":"v1","k2":123} s = pickle.dumps(dic) print(s)
运行结果:
3. pickle.load(file)
从pickle格式的文件中读取数据并转换为Python的类型。
with open('data.pickle', 'rb') as f: data = pickle.load(f)
将pickle格式的bytes字串转换为Python的类型。
import pickle dic = {"k1":"v1","k2":123} s = pickle.dumps(dic) dic2 = pickle.loads(s) print(dic2)
运行结果:
import pickle with open('data.pickle', 'rb') as f: data = pickle.load(f)
.picklle 格式的文件,用记事本打开是乱码。
运行结果:
Pickle可以持久化Python的自定义数据类型,但是在反持久化的时候,必须能够读取到类的定义。
import pickle class Person: def __init__(self, n, a): self.name = n self.age = a def show(self): print(self.name+"_"+str(self.age)) aa = Person("张三", 20) aa.show() f = open('2.txt', 'wb') pickle.dump(aa, f) f.close() # del Person # 注意这行被注释了 f = open('2.txt', 'rb') bb = pickle.load(f) f.close() bb.show()
运行结果:
行 del Person
のコメントを解除すると、コード定義内の Person クラスが削除されます。とすると、後続の load()
メソッドでエラーが発生します。
この記事では主に Python について紹介します。 pickle モジュールでは、モジュール内の主なメソッドが詳しく紹介されています。
以上がこの記事は、Python の pickle モジュールを理解するのに役立ちますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。