2014-10-12 21 views
0

我試圖在JsonStore文件中存儲值,但單擊按鈕時出現以下錯誤;在Kivy應用程序中使用JSON文件作爲商店時,權限被拒絕.json文件

File "C:\utils\kivy\kivy\kivy\storage\jsonstore.py", line 39, in store_sync with open(self.filename, 'w') as fd: PermissionError: [Errno 13] Permission denied: 'storage.json'

# import Kivy 
import kivy 
import random 
import json 

from kivy.app import App 
from kivy.uix.button import Button 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.label import Label 
from kivy.uix.textinput import TextInput 
from kivy.storage.jsonstore import JsonStore 

# my app 
class MyApp(App): 
# layout 
    def build(self): 
    # basic layout 
     layout = BoxLayout(padding=10, orientation='vertical') 
     self.store = JsonStore('storage.json') 
     # widgets 
     # button 1 
     self.btn1 = Button(text="OK") 
     self.btn1.bind(on_press=self.buttonClicked) 
     layout.add_widget(self.btn1) 
     # label 1 
     self.lbl1 = Label(text="test") 
     layout.add_widget(self.lbl1) 
     # input 1 
     self.txt1 = TextInput(text='', multiline=False) 
     layout.add_widget(self.txt1) 
     # return layout 
     return layout 




    # button click function 
    def buttonClicked(self,btn): 
     self.lbl1.text = "You wrote " + self.txt1.text 
     self.store.put('myStorage1', value1=self.txt1.text, value2='test') 
# run app 
if __name__ == "__main__": 
    MyApp().run() 
+0

嘗試將完整路徑傳遞給文件 - 取決於您如何執行腳本,用戶可能無權訪問該目錄。 – 2014-10-12 06:42:47

+0

@Burhan Khalid - 非常感謝,它使用了完整的路徑(我正在測試我的電腦)。將嘗試部署到手機,看看我能否在沒有完整路徑的情況下運行它。 – Fred 2014-10-12 07:30:50

回答

0

使用Kivy的user_data_dir自動確定用戶數據被存儲在不同的設備,然後傳遞文件來存儲的完整路徑。

from kivy.storage.jsonstore import JsonStore 
from os.path import join 

data_dir = App().user_data_dir 
store = JsonStore(join(data_dir, 'storage.json'))