Pythonファイル操作で発生した低レベルの問題


今日コードをテストして、1つの問題を発見して、1段の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
    '
     % 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+'

この問題を通じて2つの点をまとめます.
1.ファイルを操作する時、モードパラメータは注意しなければならない.
2.pythonの異常メカニズムを使用するには、エラー情報の出力に注意する必要があります.そうしないと、例えばバックグラウンドプロセスではこの問題を発見しにくくなります.