18

ファイルを読み込んでいますが、for ループで次の行を読み取る方法はあるのでしょうか?

現在、次のようなファイルを読んでいます。

file = open(input,"r").read()
for line in file.splitlines():
  line = doSomething()

とにかく、doSomething()関数で何らかの操作を実行できるように、その for ループでファイルの次の行を取得できますか?

4

3 に答える 3

36

開いているファイルをループするだけです。

infile = open(input,"r")
for line in infile:
    line = doSomething(line, next(infile))

ファイルを反復子として使用するようになったので、いつでも変数に対してnext()関数を呼び出して余分な行を取得できます。infile

2 つの追加のヒント:

  1. 変数を呼び出さないでくださいfilefilePython の組み込み型オブジェクトをマスクします。代わりに名前を付けましinfileた。

  2. 開いているファイルをwithステートメントでコンテキスト マネージャーとして使用できます。完了すると、ファイルが自動的に閉じられます。

    with open(input,"r") as infile:
        for line in infile:
            line = doSomething(line, next(infile))
    
于 2012-09-28T20:32:04.320 に答える
8
file = open(input,"r").read()
lines =  file.read().splitlines()
for i in range(len(lines)):
     line = lines[i]
     next_line = lines[i+1]
于 2012-09-28T20:33:42.137 に答える
8

あなたが行nにいる場合、行n + 1にアクセスできるようにしたいということだと思います。

これを行う最も簡単な方法は、置き換えることです

for line in file.splitlines():

lines = file.readlines()
for i in xrange(len(lines)):

lines[i] 次に、現在の行と次の行を取得できます lines[i+1]

よりpythonicな方法は、enumerateを使用することです

lines = file.readlines()
for index, line in enumerate(lines):

これで、通常のように現在の行が「行」に表示されますが、それに対して別の行を見つけたい場合は、インデックスも表示されます。

于 2012-09-28T20:40:41.167 に答える