0

ログファイルを継続的に更新しようとしていますが、log_parser.py以下のようなファイルでそのログファイルにアクセスしています:

****log_parser.py****
import time
last_pos=0
while True:
    f=open(r".\log_file.log","r")
    f.seek(last_pos)
    for i in f.readlines():
        print i
        print "****************************"
    else:
        last_pos=f.tell()
        time.sleep(1)
        continue

現在、ログ行を継続的に印刷しようとしています。ログ行がない場合、最後の位置の値が記録さseek()れ、各反復の位置が記録されますが、間違った出力が得られます。

****log_file.log****
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
.
.
.
.
.
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

これらの行をそのログファイルに動的に追加しています。

 ****Excpected output*************
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 ***********************
 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 *************************
 cccccccccccccccccccccccccccccc
 **************************
 and upto zzzzzz

しかし今、私は得ています

  ***I am Getting************
  aaaaaaaaaaaaaaaaaaaaaaaaaaaa
  **********************
  bbbbbbbbbbbbbbbbbbbbbbbbbbbbb
  *********************
  cccccccccccccccccccccccccccccccccc
  ************************
  dddddddddddddddd
  *************************
  dddddddddddd
  *******************
  eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
  ***********************************
  upto zzzzz

f.tell()しかし、メソッドがポインタを返す間に、メソッドf.seek()は行の中央の位置を探します。

誰でもこれを解決するのを手伝ってもらえますか?

4

0 に答える 0