まず結論
処理速度はopen関数の方が早い。
用途の広さではdocecs.open関数。
ソースコードの読みやすさ・シンプルさはどっちもどっち。
要は使いどころ次第でした。
きっかけ
python3の練習用に、皆様ご存知"言語処理100本ノック"をやっていると、
ファイルを開く関数が2種類あることに気付いた(openとcodecs.open)。
どちらもよく使われているっぽい。
openとcodecs.openは何が違うの?
codecs.open関数は、Python2系でエンコードしたファイルを開ける。
うん、まぁ、便利かもなぁ。
使いどころの違いとしてはそんな感じだと理解しました(指摘あれば教えてください)。
ただ、ソースコードの書き方に若干の違いがあります。以下で見ていきましょう。
ソースコードの比較
以下のようなhoge.txtを読み込むコードを作成してみます。
openのソースコード
open関数は、標準ライブラリに入っているため、特別importの必要はない。
そのぶん行数は短くなるが、引数名の指定が必須で野暮ったくも見える。
codecs.openのソースコード
codecsライブラリをimportする必要がある。
しかし引数名の指定がないぶん1行が短く、スマートに見える。
実行速度の比較
100万回の上書き処理をさせ、その速度を比較する。
なお、実行は5回づつ行った。
比較プログラムのソースコード
結果
以上の計測結果が出た。
open関数の方が約3倍速かった。
まるで赤い彗星。
結論(冒頭の結論と同じこと書いてます)
処理速度はopen関数の方が早い。
用途の広さではdocecs.open関数。
ソースコードの読みやすさ・シンプルさはどっちもどっち。
要は使いどころ次第でした。