今天测试代码,发现一个问题,一段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的异常机制需要注意做好出错信息的输出,否则例如在后台进程就不容易发现这个问题。