Python 入門指南 - 存檔與載入

簡單點,我們存檔時儲存密碼表就可以了




完整程式請參考


也就是說, Encrypt 的 getCode 方法 (method) 會取得密碼表的字串 (string) ,然後把這個字串儲存到一個固定檔名的純文字檔裡,就完成存檔的工作了。載入就讀取這個純文字檔,取得密碼表字串再用 Encrypt 的 setCode 方法重新設定密碼表即可。


整個概念很簡單,可是存檔時也是可能出現 self.eNone 的情況,因此這邊也要先進行條件檢查。


儲存 Encrypt 物件為 Save 按鈕,對應到 saveMethod 方法,程式如下
def saveMethod(self):
    if self.e == None:
        self.displayText["text"] = "No Encrypt object can save!!"
    else:
        f = open('./code.txt', 'w')
        f.write(self.e.getCode())
        f.closed
        self.displayText["text"] = "The code is saved."


這裡利用內建函數 open() 類別建立檔案,需要兩個參數 (parameter) ,第一個參數為檔案路徑名稱,第二個參數則是檔案處理模式,這裡 "w" 表示寫入,若 code.txt 不存在就會建立檔案
f = open('./code.txt', 'w')


寫入內容到檔案則是利用 write 方法,參數就是要寫入的內容
f.write(self.e.getCode())


存檔工作結束,訊息欄顯示 "The code is saved." 。


載入則是讀取 code.txt 中的內容,因為檔案內容就是密碼表。不過載入時有可能檔案不存在的情況,這是因為沒有 Save 過,所以相同目錄下不存在 code.txt 檔案,所以這邊也是先做個檔案是否存在的條件檢查,程式如下
def loadMethod(self):
    if os.path.exists("./code.txt"):
        f = open('./code.txt', 'r')
        code = f.readline()
        self.e = Encrypt()
        self.e.setCode(code)
        self.displayText["text"] = "code: " + self.e.getCode()
    else:
        self.displayText["text"] = "Load denied!!"


這裡我們先用 os.path.exists() 判斷檔案是否存在
if os.path.exists("./code.txt"):


這邊記得要先 import os 。


若不存在訊息欄就顯示 "Load denied!!" ,若存在就進行載入工作,這裡是用檔案物件的 readline() 方法
code = f.readline()


然後我們將 code 設定給 self.e 即可,這裡同樣 self.e 要先建立一個新的 Encrypt 物件
self.e = Encrypt()
self.e.setCode(code)


這是因為 self.eNone 的話,相對就沒有 setCode() 可用了。


來執行看看囉!下面是存檔



下面是載入



好了,我們接下來繼續完成 ClearCopy 兩個按鈕,使之成為完成版的 EncryptGUI 囉!


中英文術語對照
方法method
字串string
參數parameter
類別class
陣列array


您可以繼續參考
GUI 篇


相關目錄
回 Python 入門指南
回 Python 教材
回首頁


參考資料
http://docs.python.org/3.1/library/tk.html
http://docs.python.org/3.1/library/tkinter.html

沒有留言: