log.py를 먼저 실행한 다음 follow.py를 실행하는 것이 정상입니다( tail -f 的效果),但是先运行 follow.py 再运行 log.py 不可以,而且过通过 vi 在 access-log 最后添加类容,也不可以,是因为 flush 不写 ,readline 读到 같은 것이 계속되지 않을 수 있나요? 이 문제의 구체적인 근본 원인은 무엇입니까?
문제는 follow.py를 먼저 열고 thefile.seek(0 ,2)를 사용하여 log.py를 작성했다는 것입니다. )이면 해당 오프셋이 마지막이어야 합니다. access-log에 100,000줄이 있고 총 길이가 100,000바이트이면 파일 위치는 100,000번째 위치로 이동됩니다. 하지만 log.py는 w를 사용합니다. 이 모드는 처음부터 작성되므로 log.py까지 100000바이트를 작성해야 합니다. 그것은 follow.py에 의해 실제로 승인되고 100000 이후에 새 콘텐츠 출력을 시작합니다. 해결책: 쓰기 모드를 변경하고 APPEND를 사용하십시오. >추가된 패턴은 다음과 같이 작성됩니다: 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 편집에서 출력이 없는 이유는 vim을 사용하여 파일을 편집할 때 실제 파일이 아닌 임시 파일에서 편집하기 때문입니다. ".xxx.swp"(xxx는 편집된 파일 이름을 나타냄)#🎜🎜#
문제는 follow.py를 먼저 열고
thefile.seek(0 ,2)를 사용하여
이면 해당 오프셋이 마지막이어야 합니다.log.py
를 작성했다는 것입니다. )access-log
에 100,000줄이 있고 총 길이가 100,000바이트이면 파일 위치는 100,000번째 위치로 이동됩니다. 하지만log.py
는w
를 사용합니다. 이 모드는 처음부터 작성되므로log.py
까지 100000바이트를 작성해야 합니다. 그것은 follow.py에 의해 실제로 승인되고 100000 이후에 새 콘텐츠 출력을 시작합니다.해결책:
쓰기 모드를 변경하고
APPEND
를 사용하십시오. >추가된 패턴은 다음과 같이 작성됩니다:log.py
写得模式用了w
, 如果你先打开follow.py, 并且thefile.seek(0,2)
, 那么它的偏移量肯定是最后的, 如果你的access-log
有十万行, 总长度为100000字节, 那么thefile的位置就会去到第100000位置, 但是你的log.py
却用了w
, 这个模式会从头开始写, 所以直到log.py
写到100000字节, 才会真正被follow.py接受到, 并且开始输出从100000位置后新增的内容.解决办法:
换种写模式, 用
APPEND
追加的模式写:而
vim
으아악vim
편집에서 출력이 없는 이유는 vim을 사용하여 파일을 편집할 때 실제 파일이 아닌 임시 파일에서 편집하기 때문입니다. ".xxx.swp"(xxx는 편집된 파일 이름을 나타냄)#🎜🎜#