close

プログラミングの習慣としてはリソースの使用範囲を明確にする方が良いのではないかなぁ。
てか、with があるよ、と。

from __future__ import with_statement
import sys

global lineno = 0
def cat_n(filename):
    global lineno
    with file(filename, 'r') as fp:
        for line in fp:
            lineno += 1
            sys.stdout.write('%6d: %s' % (lineno, line))

for filename in sys.argv[1:]:
    cat_n(filename)

あと、file オブジェクトのデストラクタで close されるかどうかは明確になっていないので注意する必要があるとかなんとか。