Python.use(better) #body: step04x -- f.readlines()

記事一覧 Python.use(better)《Python3.1》

body: step04x -- f.readlines()

《著》森こねこ、小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28

課題を作成する過程を通して「ファイル操作」の理解を深めます。
※ Python1.5 で作成した例題を、Python3.1 で再構成しました。

事例:コードの解説

    def body(file):
        with open(file,"w") as s:
            for e in "ABCDEFGHIJ":
                s.write("%s - %d\n"%(e,ord(e)))

        with open(file,"r") as s:
            s = s.readlines()
            print("name=%r (%d lines)"%(file,len(s)))

            format = "%d: %s"
            for i,e in enumerate(s):
                n = i+1
                print(format%(n,e),end="")
■ #1: メソッド readlines
            s = s.readlines()
            print("name=%r (%d lines)"%(file,len(s)))

メソッド readlines を利用すると、ファイルの各行を列挙したリスト s が得られます。

  • ファイルの名前 file と、行数 len(s) を出力 print します。

事例:モジュールを起動する

■ 全項目を確認する

全ステップの「項目」を確認するには、関数 do を利用します。

$ python -i my_range.py
>>> do()
0: step00 -- open(file,"w")
1: step01 -- s.write(...)
2: step02 -- open(file,"r")
3: step03 -- for i,e in enumerate(f):
4: step04x -- f.readlines()
5: step05 -- print(format%(n,e),end="")
6: step06 -- def body(file):
7: step07 -- def body(file, end=None):
8: step08 -- def body(file, start=1, end=None):
9: step09 -- print("".join(s),end="")
>>>
■ 各項目を実行する

各ステップの「動作」を確認するには、関数 do に実引数を指定します。

>>> do(4)
>>> # -------------------------------------------------- step04x
>>> body('temp')
name='temp' (10 lines)
1: A - 65
2: B - 66
3: C - 67
4: D - 68
5: E - 69
6: F - 70
7: G - 71
8: H - 72
9: I - 73
10: J - 74
>>>

新たにファイル 'temp' を作成するとともに、行番号に続いて各行を出力します。

  • ファイル 'temp' の内容は、10 行だと分かります。
■ 何が問題か

行番号が1桁から2桁に変化するときに、その位置がずれてしまいます。

《余録》テストケース

def ex_body0(local, n):
    X = 'body({0!r})'.format(n)
    print_(X, local)

》こちらに移動中です《
TOP


関連記事

Last updated♪2009/11/13