多くの場合、データをファイルに出力するか、ファイルが指定されていない場合は標準出力に出力する必要があります。次のスニペットを使用します。
if target:
with open(target, 'w') as h:
h.write(content)
else:
sys.stdout.write(content)
書き直して、両方のターゲットを均一に処理したいと思います。
理想的なケースでは、次のようになります。
with open(target, 'w') as h:
h.write(content)
しかし、ブロックを離れるときにsys.stdoutが閉じられwith
、私はそれを望まないため、これはうまく機能しません。私もしたくない
stdout = open(target, 'w')
...
元の標準出力を復元することを覚えておく必要があるためです。
関連している:
- 標準出力をPythonのファイルにリダイレクトしますか?
- 例外処理- C++ と比較した Python での例外処理に関する興味深い記事
編集
target
ラップしたり、別の関数を定義したり、context managerを使用したりできることを知っています。5行以上を必要としない、シンプルでエレガントで慣用的なソリューションを探しています