pythonでlistをファイルに保存し、読み込む方法(numpyも同様!)

概要

listを一時的にファイルに保存し、読み出したいことが良くある。
いつもちょっと考えるので、まとめておく。

2018/04/24追記
pickleを使うとよりスマートに保存できるので、pickleの使い方を最後に追記。

# 以下プログラムに誤りがあったため修正しました。
 コメントにてご指摘いただき、ありがとうございました。

1行ずつlistを書き出し、読み込みを行う方法

一番素直なやり方。
Pythonを覚えたての方は、まずはこちらを試して、動作を見てみるといいかも。

listの書き出し

listを要素ごとに改行して書き出し。

f = open('list.txt', 'w')
for x in list:
    f.write(str(x) + "\n")
f.close()

listの読み出し

各行ごとに読みだして、listに戻す。
appendを使っているあたり、pythonらしくないコードのような気がするけど、とりあえずこれでも動く。

f = open("./list.txt","r")
list = []

for x in f:
    list.append(x.rstrip("\n"))
    #以下のようにしてしまうと、改行コードがlistに入ってしまうため注意
    #list.append(x)
f.close()

pickleを使用する方法(おすすめ!)

pickleを使った保存

pickleでリストをdumpするだけ、シンプル!!

import pickle
f = open('list.txt', 'w')
list = [リストを定義]
pickle.dump(list, f)

pickleを使った読み出し

こちらもpickleのライブラリを使ってloadするだけ。

f = open("./list.txt","rb")
list = pickle.load(f)

さらに応用、圧縮して保存!

ファイルサイズが大きいリストを保存したい場合は、以下のように圧縮して保存する方法もある。
www.robotech-note.com