必要なことを行うために Python でユーティリティを作成しました (関係ありませんが、社内 DSL 用の ctags 互換タグ ファイルを生成するためのものです)。
とにかく、私はステートメントのコンテキストでファイルを開いて読んでいますが、with
興味があります.人々はそのプロセスの失敗をどのように処理する傾向がありますか?
私の解決策は
with open(filename, 'rt') as f:
content = f.read()
matches = re.findall(REGEX, content)
if len(matches) > 0:
# do more stuff...
pass
ファイルを閉じて処理するのが好きなので、一致チェックを with ステートメントの外に置きました。ただし、content
ビルドされない場合、これは失敗します。
私の解決策は、content
このコードのすぐ上にある空の文字列に初期化することでしたが、私が感じたのは、関数を終了させたいということです。関数などから例外がスローされます。
この場合、残りの関数をwith
ブロックに入れることもできますが、それによって開いているファイルの範囲が広がります。障害に照らして存在するように、ブロックcontent
の前に作成できます。with
私は興味がありますが、人々が見たいと思う他の解決策は何ですか (そもそも質問に意味があると仮定して)?
私は次のようなものが好きだと思います:
with open(filename, 'rt') as f:
content = f.read()
else:
content = ''
matches = re.findall(REGEX, content)
それが一般的なコンセンサスである場合、私はそれに対処し、残りの機能のためにファイルを開いたままにしておく必要があるという考えを受け入れます。:)