Pythonのツール・アプリ

【Pythonista+UI】データ保存・読み込みの方法~shelve編~

こんにちは、みやびのです。

今回のテーマは「Pythonistaでのデータ保存方法」です。

アプリデータを保存する方法はデータベースを活用する方法・ファイルに保存する方法などがありますが、今回はファイルにデータを保存する方法について説明します。

本記事の内容は以下の通り。

・Pythonista+UI shelveを活用したデータの保存と読み込みの方法
・Pythonista+UIデータ保存と読み込みの実装例

Pythonista+UI shelveを活用したデータの保存方法

Pythonでデータをファイルに保存できるライブラリは「codecs」や「csv」などいくつか種類がありますが、今回は「shelve」というライブラリを使用します。

shelveとは?

.dataというファイル形式でデータを保存できるライブラリです。

「f['data'] = "python"」のようにキーにデータを格納することができるので、単にテキストやCSVにデータを保存するよりもデータが扱いやすいくなります。

shelveでデータを保存する方法

データを保存する手順は以下の通り。

1.データファイルを開く
2.データを格納
3.ファイルを閉じる

上記手順をまとめたコードは以下の通り。

文字列や整数だけではなく配列も格納できます。

2次元以上の配列も格納可能。

shelveでデータを読み込む方法

データを読み込む手順は以下の通り。

1.ファイルを開く
2.ファイルを読み込む
3.ファイルを閉じる

上記をコードにすると以下のようになります。

ファイルに格納されているkeyやvalueの一覧は「list(f.keys())」、「list(f.values()」で参照できます。

Pythonista+UIのデータ保存と読み込みの実装例

shelveを活用してPythonista+UIにデータ保存機能を追加する場合の実装例を紹介します。

◆機能概要

・「保存ボタン」を押すとText viewに入力した内容を保存する
・「読み込みボタン」を押すと保存したデータをText viewに読み込む

Pythonista+UIの基本的な使い方については「【Pythonista】UIライブラリの基本的な使い方」をお読みください。

1データだけ保存する方法

最も簡単な方法は1データだけ保存する方法です。保存ボタンを押すたびに保存した内容を上書きします。

保存ボタンの処理は以下の通り。
「Text view」の内容を「shelf_file['text']」に格納します。

読み込みボタンの処理は以下の通り。

「Text view」に「shelf_file['text']」からデータを読み込みます。

pyuiフィルを開いてボタンを2つ追加します。
各ボタンのパラメータは以下の通り。

◆保存ボタン
・Size:80×30
・Background Color:#ffffff
・Border:width 1.5,Radius:5
・Title:保存
・Action:save_text

◆読み込みボタン
・Size:80×30
・Background Color:#ffffff
・Border:width 1.5,Radius:5
・Title:読み込み
・Action:get_text

Pythonista・保存・読み込み

複数のデータを保存する方法

1つのデータだけではなく複数のデータを保存したい場合もあると思います。
複数のデータを保存したい場合は配列にして格納しましょう。

データを全て読み込んで「,」で連結したものをText viewに格納する処理です。

コード全文

上記コードをまとめると以下のようになります。

終わりに

今回はPythonista+UIでデータを保存する方法を紹介しました。
shelveライブラリはパソコン版のPythonでも使えるライブラリなのでPythonista以外にも応用可能です。

アプリを作っていると保存が必要なケースが出てくると思います。
データベースに保存する方法もありますが、小さなデータであればファイルで十分です。

今回紹介した方法も参考にしつつデータ保存をやってみてください。

Pythonistaの使い方まとめ>>Pythonistaの使い方まとめ

こちらの記事も読まれています

  • この記事を書いた人

みやびの

住んでいるところ:神奈川県。 プログラミング歴は13年ほど。 ※プログラミングに関する無料相談・質問への回答は行っていません。

-Pythonのツール・アプリ
-

Copyright© みやびのどっとぴーわい , 2020 All Rights Reserved Powered by AFFINGER5.