今天測試代碼,發現一個問題,一段python程序,執行之前把操作記錄到文件,以前沒有遇到問題,今天發現無法寫入文件記錄,首先貼一下代碼:
- def nas_conf_add(conf):
- try:
- exist = False
- if os.path.isfile(NAS_CONF_FILE):
- f = open(NAS_CONF_FILE)
- for x in f.readlines():
- y = json.loads(x)
- if conf.volume_name == y['volume_name']:
- exist = True
- break
- f.close()
- if exist:
- return False, '增加記錄失敗,記錄已經存在'
- f = open(NAS_CONF_FILE, 'r+')
- f.seek(0, os.SEEK_END)
- f.write('%s\n' % json.dumps(conf.__dict__))
- f.close()
- except:
- return False, '增加記錄失敗!'
- return True, '增加記錄成功!'
一開始百思不得其解,因爲之前代碼運行正常,後來發現了問題,以前運行的時候NAS_CONF_FILE文件已經存在,因此在第16行可以正確打開文件,這次測試的時候配置文件不存在,導致拋出了異常,由於調用此函數的程序是一個後臺進程,所以沒有及時發現問題。
這是個低級的錯誤,很好修改,程序第16行修改如下:
- f = open(NAS_CONF_FILE, 'wr+')
通過這個問題總結兩點:
1.操作文件時候模式參數要仔細;
2.使用python的異常機制需要注意做好出錯信息的輸出,否則例如在後臺進程就不容易發現這個問題。