Pythonファイル操作で発生した低レベルの問題
3624 ワード
今日コードをテストして、1つの問題を発見して、1段のpythonプログラム、実行する前に操作をファイルに記録して、以前は問題に出会っていないで、今日ファイルの記録を書き込むことができないことを発見して、まずコードを貼ります:
最初は、コードが正常に動作していたため、問題が発見され、以前実行されていたときにNAS_CONF_FILEファイルは既に存在するため、16行目にファイルを正しく開くことができ、今回のテストではプロファイルが存在せず、異常を投げ出した.この関数を呼び出すプログラムはバックグラウンドプロセスであるため、問題はタイムリーに発見されなかった.
これは低レベルのエラーで、よく修正され、プログラムの16行目は以下のように修正されます.
この問題を通じて2つの点をまとめます.
1.ファイルを操作する時、モードパラメータは注意しなければならない.
2.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
' % json.dumps(conf.__dict__))
- f.close()
- except:
- return False, ' !'
- return True, ' !'
最初は、コードが正常に動作していたため、問題が発見され、以前実行されていたときにNAS_CONF_FILEファイルは既に存在するため、16行目にファイルを正しく開くことができ、今回のテストではプロファイルが存在せず、異常を投げ出した.この関数を呼び出すプログラムはバックグラウンドプロセスであるため、問題はタイムリーに発見されなかった.
これは低レベルのエラーで、よく修正され、プログラムの16行目は以下のように修正されます.
- f = open(NAS_CONF_FILE, 'wr+')
この問題を通じて2つの点をまとめます.
1.ファイルを操作する時、モードパラメータは注意しなければならない.
2.pythonの異常メカニズムを使用するには、エラー情報の出力に注意する必要があります.そうしないと、例えばバックグラウンドプロセスではこの問題を発見しにくくなります.