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