6

ファイルを1行ずつ読み取る必要があり、「次の行」を覗く必要があるため、最初にファイルをリストに読み取ってから、リストを循環します...どういうわけか、これは失礼に思えます。リストの作成は高価になる。

for line in open(filename, 'r'):
    lines.append(line[:-1])

for cn in range(0, len(lines)):
    line = lines[cn]
    nextline = lines[cn+1] # actual code checks for this eof overflow

行を反復するためのより良い方法があるはずですが、先をのぞく方法がわかりません

4

3 に答える 3

6

itertoolsのペアワイズレシピのようなものを探しているかもしれません。

from itertools import tee, izip
def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return izip(a, b)

with open(filename) as f: # Remember to use a with block so the file is safely closed after
    for line, next_line in pairwise(f):
        # do stuff
于 2012-07-06T09:07:05.610 に答える
1

あなたはこのようにそれを行うことができます

last_line = None

for line in open(filename):                                                                  
    if last_line is not None:
        do_stuff(last_line, line) 
    last_line = line                                                        
于 2012-07-06T09:05:40.230 に答える
0

あなたはを作成し、iteratorこのようにすることができます:

f = open(filename, 'r')
g = open(filename, 'r')

y = iter(g.readlines())
y.__next__()

for line in f:
    print(line)
    try:
        print(y.__next__())
    except StopIteration:
        f.close()
        g.close()
于 2012-07-06T09:39:59.653 に答える