ログファイルを継続的に更新しようとしていますが、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()
は行の中央の位置を探します。
誰でもこれを解決するのを手伝ってもらえますか?