>  Q&A  >  본문

python - 플러시 및 readline 세부 정보

log.py를 먼저 실행한 다음 follow.py를 실행하는 것이 정상입니다( tail -f 的效果),但是先运行 follow.py 再运行 log.py 不可以,而且过通过 vi 在 access-log 最后添加类容,也不可以,是因为 flush 不写 ,readline 读到 같은 것이 계속되지 않을 수 있나요? 이 문제의 구체적인 근본 원인은 무엇입니까?

으아악 으아악
我想大声告诉你我想大声告诉你2681일 전780

모든 응답(1)나는 대답할 것이다

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-18 10:50:31

    문제는 follow.py를 먼저 열고 thefile.seek(0 ,2)를 사용하여 log.py를 작성했다는 것입니다. )이면 해당 오프셋이 마지막이어야 합니다. access-log에 100,000줄이 있고 총 길이가 100,000바이트이면 파일 위치는 100,000번째 위치로 이동됩니다. 하지만 log.pyw를 사용합니다. 이 모드는 처음부터 작성되므로 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는 편집된 파일 이름을 나타냄)#🎜🎜#

    회신하다
    0
  • 취소회신하다