ある.py
ファイルにおいて、リストを作成した。そして、そのリストをその他の別の.py
ファイルでも使用したい。こんな経験ありませんか?(僕は、クローリング・スクレイピングをしていてこのような状況を経験しました)
そんな時どうするか,,,,
➡pickle
を使え!!!
pickleとは
Python でデータを保存したり読み込んだりするためのライブラリです。
簡単に言うと、「Python のデータ(リストや辞書、モデルなど)をファイルに保存して、後でまた使えるようにする」 ためのもの。
事前準備
import pickle
pickle
ファイルを保存
今、book_titles_list
にいくつかの本名が格納されているとしましょう。
sample1.py
book_titles_list = ['嫌われる勇気', `限りある時間の使い方', `現代統計数理学の基礎']
そして、以下のコードを実行すると、book_titles_list
が拡張子.pickle
で自分のディレクトリ内に保存されます。
sample1.py
# リストをファイルに保存
with open('book_0titles_list.pkl', 'wb') as f:
pickle.dump(book_titles_list, f)
そして、実際カレントディレクトリに↓
しっかりと保存されていることがわかると思います。
pickleファイルの読み込み
さて、読み込みです。↓でsample2.py
でもbookd_titeles_list
を再利用できます!
sample2.py
# 保存されたリストを読み込む
with open('book_titles_list.pkl', 'rb') as f:
book_titles_list = pickle.load(f)
※追記 with open()
の構文について
with open(filename, mode)
は、任意のファイルを開き、作業が終わったら自動的にファイルを閉じる仕組みを提供します。
mode
の種類は、↓
mode | 説明 |
---|---|
'r' | 読み取り専用。ファイルが存在しない場合はエラー。 |
'w' | 書き込み専用。ファイルが存在しない場合は作成、存在する場合は上書き。 |
'a' | 追記モード。既存ファイルの末尾にデータを書き込む。 |
- 例1(mode='r')
example1_'r'
with open('example1.txt', 'r') as f:
content = f.read()
print(content) # ファイルの内容を文字列として出力
ちなみに、バイナリデータ(.txt
以外のファイル)を読み込むときは'b'
をつけ足して'rb'
, 'wb'
などとしましょう。
- 例2(mode='wb')
example2_'wb'
data = b'Hello, binary world!' # バイト列データ
with open('example2.bin', 'wb') as f:
f.write(data)