Cool_Breeze 发表于 2020-6-2 16:33:07

实时检查文本追加的新内容

#!/usr/bin/env python3
#coding:utf-8

import threading
import os
from time import sleep

def writefile(file):
    os.system('for /l %i in (1,1,20) do (@timeout /t 1 >nul&echo 正在写入新的一行:%i >> '+ file + ')') #调用批处理写入文件
   
def readfile(filestream):
    filestream.seek(0,2) #移到文件末尾
    while True:
      line = filestream.readline()
      if line:
            yield line
      else:
            sleep(0.5)
   
def threa(f):
    count = 1
    with open(f) as fs:
      for i in readfile(fs):
            print('\n文件写入了新的内容:',i)
            if count == 20:
                os.system('taskkill /f /pid ' + str(os.getpid()))
            count += 1

f = r'd:\test.txt'
if not os.path.exists(f): #文件不存在,创建空文件
    with open(f, 'w') as f:
      pass

th = []
th.append(threading.Thread(target = writefile, args = (f,)))
th.append(threading.Thread(target = threa, args = (f,)))

for i in range(len(th)):
    th.start()
   
for i in range(len(th)):
    th.join()


文件写入了新的内容: 正在写入新的一行:18


D:\GIN\py>()

文件写入了新的内容: 正在写入新的一行:19


文件写入了新的内容: 正在写入新的一行:20

成功: 已终止 PID 为 7924 的进程。

请按任意键继续. . .

赚小钱 发表于 2020-6-2 18:45:29

本帖最后由 赚小钱 于 2020-6-2 18:48 编辑

很有想法,不过,是 fsnotify 不好用吗

Cool_Breeze 发表于 2020-6-2 21:18:15

赚小钱 发表于 2020-6-2 18:45
很有想法,不过,是 fsnotify 不好用吗

不会。感觉要学的东西好多啊!

hrp 发表于 2020-6-2 21:45:47

每次看楼主的代码都觉得有点新奇{:10_250:}
页: [1]
查看完整版本: 实时检查文本追加的新内容