我写了个实时告警的程序 每当有告警出现的时候就会在桌面生成一个叫warning.txt的文件,我想用python每分钟去扫描一次桌面,发现warning.txt这个文件的时候就自动把文件里面的内容读出来,并且只读文件里面的中文和数字,不读英文部分,请问如何实现?
循环每分钟判断文件是不是存在,读出文件内容,把其中英文部分用正则去掉即可
你题目的解答代码如下:
import time
import os
import re
fn = r"C:\Users\xxxxxxxxxxxx\Desktop\warning.txt"
while True:
if os.path.isfile(fn):
with open(fn, 'r', encoding='utf-8') as fileObj:
text = fileObj.read()
text = re.sub('[a-zA-Z]','',text)
print(text)
#调用语音库的程序
os.remove(fn) #删除文件,防止重复播放语音,如果不需要删除文件可以去掉这行
time.sleep(60)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
使用定时任务库schedule,每分钟执行一次函数调用,对出现的文本用正则匹配处理,参考代码:
import time
import schedule
import random
import re
import os
s=['hi,开始测试','wrong text,文本错误 ','just for testing,测试情况1','read this warning,继续进行测试12单元']
def job1():
print("writing...")
with open('C:/Users/xyz/Desktop/warning.txt', 'w') as f:
f.write(random.choice(s))
def job2():
print("reading...")
for f in os.listdir('C:/Users/xyz/Desktop'):
if f=='warning.txt':
with open('C:/Users/xyz/Desktop/warning.txt','r') as f:
t=f.read()
res = re.findall('[\u4e00-\u9fa50-9]+',t)
print(','.join(res))
time.sleep(10)
os.unlink('C:/Users/xyz/Desktop/warning.txt')
schedule.every(60).seconds.do(job1)
schedule.every(60).seconds.do(job2)
while True:
schedule.run_pending()
time.sleep(1)
运行结果:
writing...
reading...
继续进行测试12单元
writing...
reading...
开始测试
writing...
reading...
文本错误
如有帮助,请点采纳。
python字符串处理,不难吧
每分钟去读取一次: 用一个定时器实现,比如说
import time
import re
while(1):
with open 'warning.txt' as f:
data = f.read()
data = re.sub('[a-zA-Z]','',data)
time.sleep(60)