ファイルを読み込んでいますが、for ループで次の行を読み取る方法はあるのでしょうか?
現在、次のようなファイルを読んでいます。
file = open(input,"r").read()
for line in file.splitlines():
line = doSomething()
とにかく、doSomething()
関数で何らかの操作を実行できるように、その for ループでファイルの次の行を取得できますか?
開いているファイルをループするだけです。
infile = open(input,"r")
for line in infile:
line = doSomething(line, next(infile))
ファイルを反復子として使用するようになったので、いつでも変数に対してnext()
関数を呼び出して余分な行を取得できます。infile
2 つの追加のヒント:
変数を呼び出さないでくださいfile
。file
Python の組み込み型オブジェクトをマスクします。代わりに名前を付けましinfile
た。
開いているファイルをwith
ステートメントでコンテキスト マネージャーとして使用できます。完了すると、ファイルが自動的に閉じられます。
with open(input,"r") as infile:
for line in infile:
line = doSomething(line, next(infile))
file = open(input,"r").read()
lines = file.read().splitlines()
for i in range(len(lines)):
line = lines[i]
next_line = lines[i+1]
あなたが行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):
これで、通常のように現在の行が「行」に表示されますが、それに対して別の行を見つけたい場合は、インデックスも表示されます。