2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Quad incAdvent Calendar 2017

Day 22

Pythonでplistバイナリを出力

Last updated at Posted at 2017-12-21

概要

  • AWS LambdaでJSONファイルを出力し、それをiOSのアプリケーションで読み込ませた
  • iPadが古い(初代iPad Air)のと、諸々の事情で25万レコードを1ファイルに持つ必要があり、JSONだとパースのときに死ぬ
  • plistのバイナリにしたらパース不要で負荷も低減:v:
JSON plistバイナリ
ファイルサイズ 12MB 7MB
メモリ使用量 112MB 45MB

※ファイルサイズはその後の調整でJSONでもそれほど変わらなくなったので、サイズに関してはあまり期待しないほうがよいかも

#Pythonでplistバイナリを出力する

plistlibを使います。

plistlib.dump(value, fp, *, fmt=FMT_BINARY, sort_keys=True, skipkeys=False)
import plistlib

:

def save_to_plist(data):
    data_set = []
    for record in data:
        data_set.append(
            (
                record['code'],
                record['name']
            )
        )
    save_path = "/tmp/article.plist"
    with open(save_path, "wb") as fp:
        plistlib.dump(data_set, fp, fmt=plistlib.FMT_BINARY, sort_keys=True, skipkeys=False)
    return save_path

これだけです。簡単ですね

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?