0

テキストファイルの現在位置を 1 行戻したい。

例:

テキストファイルで「x」という単語を検索します。

テキストファイル:

  1. ライン: qwe qwe
  2. ライン:×
  3. ライン: qwer
  4. ライン: qwefgdg

その単語が見つかったら、fobj の現在の位置を 1 行戻します。(この例では、2. 行で単語を見つけたので、位置は 1. 行の先頭に設定されます)

私は fseek を使用しようとします。しかし、私はそれほど成功しませんでした。

4

2 に答える 2

2

これは、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メソッドが反復とうまく調和しないことに注意してください。安全のためにファイルを再度開いてください。

于 2013-09-09T07:33:18.667 に答える
0
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

永久ループになるので注意。ループを終了するには、必ず終了条件を入力してください。

于 2013-09-09T07:08:06.720 に答える