ホームページ  >  記事  >  バックエンド開発  >  Python はオブジェクトをファイルに保存します

Python はオブジェクトをファイルに保存します

巴扎黑
巴扎黑オリジナル
2016-11-26 10:19:532197ブラウズ

1. Pickle パッケージ
(1) メモリ内のオブジェクトをテキスト ストリームに変換します:

import pickle  
# define class  
class Bird(object):  
    have_feather = True  
    way_of_reproduction  = 'egg'  
  
summer       = Bird()                 # construct an object  
picklestring = pickle.dumps(summer)   # serialize object



pickle.dumps() メソッドを使用して、オブジェクト Summer を文字列 picklesring (つまり、テキスト ストリーム) に変換します。次に、通常のテキスト保存方法を使用して文字列をファイルに保存します (テキスト ファイルの入出力)。

もちろん、pickle.dump() メソッドを使用して上記の 2 つの部分を 1 つに結合することもできます:

import pickle  
# define class  
class Bird(object):  
    have_feather = True  
    way_of_reproduction  = 'egg'  
  
summer       = Bird()                        # construct an object  
fn           = 'a.pkl'  
with open(fn, 'w') as f:                     # open file with write-mode  
    picklestring = pickle.dump(summer, f)   # serialize and save object

オブジェクト Summer はファイル a.pkl に保存されます

(2)、オブジェクトを再構築します

まず、テキストからテキストを読み取り、文字列に保存します(テキストファイルの入出力)。次に、 pickle.loads(str) メソッドを使用して文字列をオブジェクトに変換します。この時点で、プログラムにはオブジェクトのクラス定義がすでに存在している必要があることに注意してください。

さらに、pickle.load() メソッドを使用して上記の手順をマージすることもできます:

import pickle  
# define the class before unpickle  
class Bird(object):  
    have_feather = True  
    way_of_reproduction  = 'egg'  
fn     = 'a.pkl'  
with open(fn, 'r') as f:  
    summer = pickle.load(f)   # read file and build object



2. cPickle パッケージ
cPickle パッケージの機能と使用法は、pickle パッケージとほぼ同じです (は違いです)実際にはほとんど使用されません)、違いは、cPickle が C 言語で書かれており、pickle パッケージよりも 1000 倍高速であることです。上記の例で、cPickle パッケージを使用したい場合は、インポート ステートメントを次のように変更できます。
cPickle を pickle としてインポート
変更を加える必要はありません。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Python の豆知識次の記事:Python の豆知識