web-dev-qa-db-ja.com

ファイルの次の行を取得する

私はファイルを読んでいて、forループの次の行を読む方法があるのだろうか?

私は現在、このようなファイルを読んでいます:

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

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

17
overloading

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

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

ファイルをイテレータとして使用するようになったため、infile変数で next() function をいつでも呼び出して、余分な行を取得できます。

2つの追加のヒント:

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

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

    _with open(input,"r") as infile:
        for line in infile:
            line = doSomething(line, next(infile))
    _
33
Martijn Pieters
file = open(input,"r").read()
lines =  file.read().splitlines()
for i in range(len(lines)):
     line = lines[i]
     next_line = lines[i+1]
8
Joran Beasley

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

それを行う最も簡単な方法は、交換することです

for line in file.splitlines():

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

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

よりPython的な方法は列挙を使用することです

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

現在、通常のように「行」に現在の行がありますが、それに関連する別の行を見つけたい場合は、インデックスもあります。

8
BostonJohn