2016-02-12 12 views
0

復位保存提供錯誤消息「IO錯誤:[錯誤9]壞文件描述符」Kivy移植到iOS。打開文件的工作,同時寫入文件不

def reset_save(self): 
    try: 
     file = open("./save.txt", "rw+") 
    except: 
     print("Wrong when saving to file.") 
    else: 
     for n in self.highscore: 
      file.write('0' + '\n') 
     self.highscore = [0,0,0,0,0,0,0,0,0,0] 
     file.close() 

的「RW +」由「W」改變從android版本,使用「w」打印出「保存到文件時出錯」。使用此代碼的Android版本沒有問題。

裏有reset_save是用來寫10行零,重置排行榜名單要麼版本

def get_save(self): 
    try: 
     file = open("./save.txt", "r") 
    except: 
     print("Wrong when opening file.") 
    else: 
     n = 0 
     for line in file: 
      self.highscore[n] = float(line) 
      n += 1 
     file.close() 

與get_save沒有問題。

的get_save發生在save.txt的線條,並將它們放入一個列表

我用kivy指南端口從機器人到iOS。它通過Xcode構建。遊戲的其餘部分與android版本相同。

回答

0

當您的應用程序可寫時,並非所有平臺上的所有目錄都是可寫的。在iOS上,所有應用程序都是沙盒的,並且應用程序所在的目錄不可寫。但Android上的情況並非如此。 閱讀將工作,因爲我猜你正在運送一個默認的save.txt文件。如果在應用程序啓動時不存在,則不應創建它。

如果要保存文件,請將其保存在App.user_data_dir中。下面是reset_save函數的一個示例,返工:

from kivy.app import App 
from kivy.logger import Logger 
from os.path import join 

def reset_save(self): 
    user_data_dir = App.get_running_app().user_data_dir 
    filename = join(user_data_dir, "save.txt") 
    try: 
     self.highscore = [0] * 10 
     with open(filename, "w") as fd: 
      for n in self.highscore: 
       fd.write('0' + '\n') 
    except: 
     Logger.exception("Cannot reset save file") 
+0

謝謝!我有一個非常小的更正:而不是file.write('0'+'\ n'),需要fd.write('0'+'\ n')。 – Marcus