pickleを使う

pickleモジュールを使うと、Pythonのデータ構造(タプルとかリストとかクラスのインスタンスとか)を保存できます。
pickle化がPythonのオブジェクトをバイト列に変換すること、非pickle化はその逆を指します。

Pickle化

dumpを使います。

dump(オブジェクト, ファイルオブジェクト)

第二引数はopen(ファイル名)といった感じで開いたファイルオブジェクトを渡してください。

なお、dumpsを使うと、ファイルに書き込まずに文字列が返されます。

非Pickle化

loadを使います。

load(ファイルオブジェクト)

こちらも、開かれたファイルオブジェクトを渡すようにします。
なお、dumpsで作った文字列を読み込むにはloadsを使います。

クラスのインスタンスを保存して、読みだしています。
ここではクラスインスタンスをpickle化してますが、他のデータでもできます。

>>> import pickle
>>>
>>> # 適当にクラスを作る
>>> class hoge:
...     def __init__(self, data):
...             self.data = data
...
>>> h = hoge(10)
>>> h.data
10
>>>
>>> # Pickle化
>>> f = open('test.txt', 'w')
>>> pickle.dump(h, f)
>>> f.close()
>>>
>>> # 非Pickle化
>>> f = open('test.txt')
>>> h2 = pickle.load(f)
>>> h2
<__main__.hoge instance at 0x0174DCD8>
>>> h2.data
10
>>> f.close()

安全性について

調べていたら、Pickleの安全性について言及しているサイトを見つけた。

http://nadiana.com/python-pickle-insecure

pickleモジュールはセキュリティについて何も考慮していないので、非pickle化するデータには細心の注意を払いましょうとのことです。
上記サイトに記されている例ですが、
>||python|
import pickle
pickle.loads("cos\nsystem\n(S'dir'\ntR.") # This will run: dir
|

でdirが実行されてしまいます。
このように、非pickle化はコマンドを実行してしまう可能性があります。
上記サイトでは、その対策が記されていますが、代替としてJSONを使うことなども勧められていました。