Android如果它不存在python,如何创建一个新的json文件

时间:2016-04-19 23:28:45

标签: android python json file kivy

我正在创建一个应用程序,允许用户输入信息并将数据保存到名为hello.json的json文件中。这在文件存在时工作正常,但是当在android上测试时它崩溃了,因为它不包含这个文件。如果它不存在,如何在android上创建一个新的json文件?

.py文件

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.popup import Popup
from kivy.uix.button import Button
from kivy.graphics import Color, Rectangle
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import AsyncImage
from kivy.uix.label import Label
from kivy.properties import StringProperty, ListProperty
from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.textinput import TextInput
from kivy.network.urlrequest import UrlRequest
from kivy.storage.jsonstore import JsonStore
from os.path import exists
from kivy.compat import iteritems
from kivy.storage import AbstractStore
from json import loads, dump
from kivy.config import Config



class Phone(FloatLayout):
    def __init__(self, **kwargs):
        # make sure we aren't overriding any important functionality
        super(Phone, self).__init__(**kwargs)

    with self.canvas.before:
        Color(0, 1, 0, 1)  # green; colors range from 0-1 instead of 0-255
        self.rect = Rectangle(size=self.size, pos=self.pos)

    self.bind(size=self._update_rect, pos=self._update_rect)

    with open('hello.json') as inFile:
        try:
            data = Phone.load(self)
        except KeyError:
            data = []

def _update_rect(self, instance, value):
    self.rect.pos = instance.pos
    self.rect.size = instance.size

def product(self, instance):
    self.result.text = str(float(self.w.text) * 703/ (float(self.h.text) * float(self.h.text)))

def save(self):
    store = JsonStore('hello.json')
    name = self.n.text
    gender = self.g.text
    dtype = self.t.text
    height = self.h.text
    weight = self.w.text
    bmi = self.result.text
    medications = self.m.text
    insulin = self.ti.text
    store.put('profile', name=name, gender=gender, dtype=dtype, height=height, weight=weight, bmi=bmi, medications=medications, insulin=insulin)



def load(self):
    store = JsonStore('hello.json')
    profile = store.get('profile')
    self.n.text = profile['name']
    self.g.text = profile['gender']
    self.t.text = profile['dtype']
    self.h.text = profile['height']
    self.w.text = profile['weight']
    self.result.text = profile['bmi']
    self.m.text = profile['medications']
    self.ti.text = profile['insulin']

    try:
        store.get('profile')['name']
    except KeyError:
        name = ""
    else:
        name = store.get('profile')['name']        




presentation = Builder.load_file("main.kv")

class PhoneApp(App):
    def build(self):
        store = JsonStore('hello.json')

        return Phone()



if __name__ == '__main__':
    PhoneApp().run()

1 个答案:

答案 0 :(得分:0)

您应该使用with open('hello.json', 'a+') as inFile

  

a +打开文件以进行追加和阅读。如果文件存在,则文件指针位于文件的末尾。该文件以追加模式打开。如果该文件不存在,则会创建一个用于读写的新文件。