多くの場合、ファイルまたはファイルが指定されていない場合はstdoutにデータを出力する必要があります。次のスニペットを使用します。
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)
しかし、withブロックを離れるときにsys.stdoutが閉じられているので、これはうまくいきません。私もしたくない
stdout = open(target, 'w')
...
元の標準出力を復元することを覚えておく必要があるからです。
関連:
- stdoutをPythonのファイルにリダイレクトしますか?
- 例外の処理 -C ++と比較した、Pythonでの例外の処理に関する興味深い記事
編集する
ラップしたりtarget、別の関数を定義したり、コンテキストマネージャを使用したりできることはわかっています。5行以上必要としないシンプルでエレガントな慣用的なソリューションフィッティングを探しています