テキストファイルの現在位置を 1 行戻したい。
例:
テキストファイルで「x」という単語を検索します。
テキストファイル:
- ライン: qwe qwe
- ライン:×
- ライン: qwer
- ライン: qwefgdg
その単語が見つかったら、fobj の現在の位置を 1 行戻します。(この例では、2. 行で単語を見つけたので、位置は 1. 行の先頭に設定されます)
私は fseek を使用しようとします。しかし、私はそれほど成功しませんでした。
テキストファイルの現在位置を 1 行戻したい。
例:
テキストファイルで「x」という単語を検索します。
テキストファイル:
その単語が見つかったら、fobj の現在の位置を 1 行戻します。(この例では、2. 行で単語を見つけたので、位置は 1. 行の先頭に設定されます)
私は fseek を使用しようとします。しかし、私はそれほど成功しませんでした。
これは、Python で行う方法ではありません。ファイルを反復処理し、現在の行をテストするだけで、ファイル ポインターについて心配する必要はありません。前の行の内容を取得する必要がある場合は、それを保存してください。
>>> with open('text.txt') as f: print(f.read())
a
b
c
d
e
f
>>> needle = 'c\n'
>>> with open('test.txt') as myfile:
previous = None
position = 0
for line in myfile:
if line == needle:
print("Previous line is {}".format(repr(previous)))
break
position += len(line) if line else 0
previous = line
Previous line is 'b\n'
>>> position
4
前の行のバイト位置が本当に必要な場合は、tell/seek
メソッドが反復とうまく調和しないことに注意してください。安全のためにファイルを再度開いてください。
f = open('filename').readlines()
i = 0
while True:
if i > range(len(f)-1):
break
if 'x' in f[i]:
i = i - 1
print f[i]
i += 1
永久ループになるので注意。ループを終了するには、必ず終了条件を入力してください。