色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

python - flush 和 readline 細節

瀏覽:110日期:2022-07-22 08:15:58

問題描述

先運行 log.py 再運行 follow.py 正常(可以有類似 tail -f 的效果),但是先運行 follow.py 再運行 log.py 不可以,而且過通過 vi 在 access-log 最后添加類容,也不可以,是因為 flush 不寫 0,readline 讀到 0 就不繼續嗎?這個問題具體底層是什么原因?

# log.py f = open('access-log','w')import time, randomwhile 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.pyimport timedef 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 useif __name__ == ’__main__’: logfile = open('access-log') for line in follow(logfile):print line,

問題解答

回答1:

問題在于, 你的log.py寫得模式用了w, 如果你先打開follow.py, 并且thefile.seek(0,2), 那么它的偏移量肯定是最后的, 如果你的access-log有十萬行, 總長度為100000字節, 那么thefile的位置就會去到第100000位置, 但是你的log.py卻用了w, 這個模式會從頭開始寫, 所以直到log.py寫到100000字節, 才會真正被follow.py接受到, 并且開始輸出從100000位置后新增的內容.解決辦法:換種寫模式, 用APPEND追加的模式寫:

f = open('access-log','a+')

而vim編輯沒有輸出的原因是, 當我們用vim編輯文件時, 是編輯在一個臨時文件上, 并不是真正的文件, 臨時文件名是'.xxx.swp' (xxx代表被編輯的文件名)

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 欧美日韩国产一区二区三区在线观看 | 国产成人福利视频在线观看 | 久草在线新免费 | 中国a级毛片免费 | 久草视频首页 | 一级特黄aaa大片在线观看 | 国产精品黄网站 | 亚洲成人黄色网址 | 亚洲精品98久久久久久中文字幕 | 综合亚洲精品一区二区三区 | 国产欧美日韩免费一区二区 | 在线播放一区二区精品产 | 欧美一级俄罗斯黄毛片 | 亚洲国产精品国产自在在线 | 一级a俄罗斯毛片免费 | 久久精品18 | 国产成人综合亚洲一区 | 久久精品免费全国观看国产 | 中文字幕日韩有码 | 国产成人综合在线视频 | 色综合久久88一加勒比 | 国产成人在线视频网站 | 91免费永久在线地址 | 午夜剧场成年 | 欧美成人www在线观看网页 | 成年片人免费www | 岛国大片在线播放免费 | 日本午夜人成免费视频 | 欧美 自拍 丝袜 亚洲 | 欧美综合成人 | 综合在线视频精品专区 | 国产伦精品一区三区视频 | 国产一区二区三区在线观看视频 | 欧美大尺度免费一级特黄 | 美女毛片大全 | 国产一区在线免费观看 | 日本一区二区三区免费视频 | 欧美影院网站视频观看 | 精品一区二区三区高清免费不卡 | 亚洲免费观看在线视频 | 欧美一级视频免费观看 |