pythonのpickleの話です。
正直、どういうときに使うものなのかよくらからない。いや、分からないこともないこともないんですけどね。ええ。まあその話は下の方で書くとしまして。
ファイルに保存
import pickle sepblectus = {"r":"", "o":"", "y":"", "g":"", "b":"Celen", "i":"Kya", "v":"Amy"} with open("sep.pickle", "wb") as f: pickle.dump(sepblectus, f)
pythonオブジェクトならなんでもいい(らしい)。
調べたところ、どうやら別にバイナリモードで保存しなければいけないわけではないらしい。ずいぶん遠回しな書き方ですね。
簡単に言うと「バイナリモードの方が推奨されるのでそっちでやれ。あ、でも強制じゃないよ。」ってわけ。
読み込み
import pickle with open("sep.pickle","rb") as f: d = pickle.load(f) print(d)
{'r': '', 'o': '', 'y': '', 'g': '', 'b': 'Celen', 'i': 'Kya', 'v': 'Amy'}
「EOFError: Ran out of input」が表示された
pickle用に保存したファイルが空だった時にでるエラーらしい。そげなバカな………!?と思ってファイル確認したらたしかにファイルサイズが0kbだった。(原因未調査)
対処法がここに書いてあるような書いていないような気がしたけどあんまりしっくりこなかったので記憶貯蔵庫には書かない。
で、どういうときに使うの?
平たく言うと、Pythonオブジェクトをファイルとして保存し、呼び出せるようにすることができる形にするためのライブラリという事になります。
分かるようで分かりませんわ。分かるんだけど、完全に理解にしたにならないんですの。
DataFrameと使うときの注意
pandasのDataFrameをpickle化した後,pandasまたはPythonのバージョンを上げると,このpickleをloadした際に以下の様なエラーが起きることがあります.
ModuleNotFoundError: No module named 'pandas.indexes'
引用元:
https://estuarine.jp/2017/07/pickle_pandas_error/
なんかエラーはいたんだけど???ってなったので調べたらそういうことらしい。
参考
https://techacademy.jp/magazine/15826
https://www.sejuku.net/blog/31480
https://qiita.com/hatt0519/items/f1f4c059c28cb1575a93
https://www.it-swarm-ja.com/ja/python/1048510139/
https://estuarine.jp/2017/07/pickle_pandas_error/
https://stackoverflow.com/questions/37371451/importerror-no-module-named-pandas-indexes