Python文件操作遇到的低級問題

今天測試代碼,發現一個問題,一段python程序,執行之前把操作記錄到文件,以前沒有遇到問題,今天發現無法寫入文件記錄,首先貼一下代碼:

  1. def nas_conf_add(conf): 
  2.         try
  3.                 exist = False 
  4.                 if os.path.isfile(NAS_CONF_FILE): 
  5.                         f = open(NAS_CONF_FILE) 
  6.                         for x in f.readlines(): 
  7.                                 y = json.loads(x) 
  8.                                 if conf.volume_name == y['volume_name']: 
  9.                                         exist = True 
  10.                                         break 
  11.                         f.close() 
  12.  
  13.                 if exist: 
  14.                         return False'增加記錄失敗,記錄已經存在' 
  15.  
  16.                 f = open(NAS_CONF_FILE, 'r+'
  17.                 f.seek(0, os.SEEK_END) 
  18.                 f.write('%s\n' % json.dumps(conf.__dict__)) 
  19.                 f.close() 
  20.         except
  21.                 return False'增加記錄失敗!' 
  22.         return True'增加記錄成功!' 

一開始百思不得其解,因爲之前代碼運行正常,後來發現了問題,以前運行的時候NAS_CONF_FILE文件已經存在,因此在第16行可以正確打開文件,這次測試的時候配置文件不存在,導致拋出了異常,由於調用此函數的程序是一個後臺進程,所以沒有及時發現問題。

這是個低級的錯誤,很好修改,程序第16行修改如下:

  1. f = open(NAS_CONF_FILE, 'wr+'

通過這個問題總結兩點:

1.操作文件時候模式參數要仔細;

2.使用python的異常機制需要注意做好出錯信息的輸出,否則例如在後臺進程就不容易發現這個問題。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章