試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Pythonのファイルオブジェクトの行ごとの処理についての書き方を改善

これまで

f = open ([ファイルの場所], "r")
while True:
  line = f.readline ()
  if not line:
    break
  [以下行ごとの処理]
f.close ()

のように記述していたが、(今さらではあるかもしれないが)ファイルオブジェクトのreadline()を使用する代わりにfor文で

f = open ([ファイルの場所], "r")
for line in f:
  [以下行ごとの処理]
f.close ()

のように書けることが分かった。これによりコードは短くできる上に定数を条件にしたwhile文も使わないで書けるようになった。
Pythonでは色々なもの(Web上のデータや子プロセスの出力など)をファイルオブジェクトのように扱えるが、これらについても同様に記述できる。ただし、その場合、若干挙動が異なる場合もあり、「Pythonを用いてマルチスレッド処理で外部プロセスをバックグラウンド実行する」のコードでは「-- output [3] begin --」以下の出力のされ方が変わってしまう。

参考URL: