用途:工控机测试,万次开启过程中,监控弹窗报错信息。
问题点:在测试过程中,temp生成的临时文件_MEI过多,c盘被写满。
所以动态获取上一次的临时文件路径,记录在txt文件中。下一次启动后自动删除上一次的临时文件。
参考:https://blog.csdn.net/maozexijr/article/details/91044472的方法。但是经过测试,原程序在运行中,是不能删除正在使用的_MEI文件。所以进行改进,下一次启动后再删除。
# !/usr/bin/python3
# coding: utf-8
from PIL import ImageGrab
import time
import gc
import os
import sys
import traceback
import shutil
this = os.path.abspath(os.path.dirname(__file__))
module = os.path.split(this)[0]
print('sys.path.append("%s")' % module)
sys.path.append(module)
for i, val in enumerate(sys.path):
print("[%s] %s" % (i + 1, val))
def delMEI():
print("执行delMEI函数")
for index, path in enumerate(sys.path):
basename = os.path.basename(path)
if not basename.startswith("_MEI"):
continue
drive = os.path.splitdrive(path)[0]
if "" == drive:
path = os.getcwd() + "\\" + path
path = path.replace("\\\\", "\\")
if os.path.isdir(path):
try:
print("remove", path)
if os.path.exists("del_temp.txt"):
file = open("del_temp.txt", "r") # 打开文件夹
p = file.readlines()[0] # 读取temp文件位置
shutil.rmtree(p) # 删除temp文件
file.close()
print("删除路径", p)
with open("del_temp.txt", "w") as f:
f.write(path) # 写入路径,便于下次删除
print("写入路径", path)
except:
pass
finally:
break
def run():
count = 0
while True:
if count == 0: # 第一次,10s执行截屏
time.sleep(10)
count += 1
pic = ImageGrab.grab()
name = time.strftime("%Y-%m-%d---%H:%M:%S", time.localtime()).replace(':', '-')
pic.save(r'%s.jpg' % name)
print(count)
with open("grab_screen_log.txt", "a") as f:
f.write("截图%s.jpg成功!\r\n" % name)
try:
print("Start to xx..")
print("End of the xx")
except:
traceback.print_exc()
finally:
gc.collect()
delMEI()
time.sleep(10)
if __name__ == '__main__':
run()