実行log.py
befure follow.py
それだけでtail -f
のように、動作しますが、それは動作しませんlog.py
前follow.py
を実行し、私は、ファイル、access-log
で何かを追加Vimを使用している場合、それはどちらも動作しません。詳細
なぜですか? flush
の前
は\0
を書いて、readline
後にそれが継続しない\0
または何か他のものを読んでいないのですか?
flush
とreadline
の詳細は?あなたが最初follow.py
を実行した場合
# log.py
f = open("access-log","w")
import time, random
while True:
time.sleep(random.random())
n = random.randint(0,len(ips)-1)
m = random.randint(0,len(docs)-1)
t = time.time()
date = time.strftime("[%d/%b/%Y:%H:%M:%S -0600]",time.localtime(t))
print >>f,"%s - - %s %s" % (ips[n],date,docs[m])
f.flush()
# follow.py
import time
def follow(thefile):
thefile.seek(0,2) # Go to the end of the file
while True:
line = thefile.readline()
if not line:
time.sleep(0.1) # Sleep briefly
continue
yield line
# Example use
if __name__ == '__main__':
logfile = open("access-log")
for line in follow(logfile):
print line,
ありがとう – caimaoy