こしあん
2018-09-23

zipに固められた複数のpickleファイルを解凍なしで読み込む


Pocket
LINEで送る
Delicious にシェア

2.5k{icon} {views}

Zipファイルに固められたファイル(pickleで圧縮した複数のファイル)をファイルに書き出すことなく読み込む方法を見ていきます。ディープラーニングで複数回訓練してその結果をまとめてZipに保存する、ということをよくやるので忘備録に。

infolist()でファイル一覧を読んで、pickle.loads()に渡す

pickle — Python オブジェクトの直列化
13.5. zipfile — ZIP アーカイブの処理

import zipfile, pickle

with zipfile.ZipFile(zip_file) as zip:
    for info in zip.infolist():
        if info.is_dir(): continue
        data = pickle.loads(zip.read(info.filename))
        print("\n", data)

まずはinfolist()でZip内のオブジェクト一覧を取得します。これにはディレクトリも含まれているので、info.is_dir()で除外します。他にもPickle以外のファイルがあったら適宜除外してください。

次にzip.readで読み込むとバイナリで出てくるので、このオブジェクトをデシリアライズしたいときはpickle.loads()【複数形に注意】に読ませます。print()でそのまま出力させていますが、処理にあわせて適宜変えてください。

以上です。自分もよく忘れるのでメモとして。

Pocket
LINEで送る
Delicious にシェア



Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内

技術書コーナー

北海道の駅巡りコーナー


Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です