一、版本
python 3.5
selenium 4.1.0
pycharm 社区版
二、代码
其实我感觉firefox的也可以。这个方法网上是没有的,selenium也未提供下载完成判断。
@staticmethod
def judge_file_exist(is_check,check_times,check_interval_sec,check_path,filter_down_file,check_ext):
"""
检测函数
:param is_check:是否检测True表示检测False 不检查
:param check_times:检测次数
:param check_interval:检测时间间隔(默认值)
:param check_path:检测路径(默认值)
:param chedk_ext:检测扩展名(默认值)
:return:返回真假
"""
if os.path.exists(check_path) is False:
raise Exception("路径不存在...")
if str.isdigit(str(check_times)) is False:
raise Exception("检测次数不是数字...")
if is_check is False:
return True,"不进行检测" #直接执行下一步操作
else:
for number in range(1,int(check_times)):
print("正在进行第"+str(number)+"次检测...")
sleep(0.5) #延迟1s经常检测不到
files = os.listdir(check_path) # 读取目录下所有文件
if len(filter_down_file) > 0:
for file in files:
for filter_file in filter_down_file:
if str(file) in str(filter_file):
files.remove(filter_file)
BaseFrame().right(filter_file + "文件被过滤...")
pass
file_number=len(files)
if file_number ==0:
#不存在任何文件,休眠一会 继续执行下一次
sleep(int(check_interval_sec)) # 休眠一会
return False, "0个文件认定是False"
elif file_number==1:
file_name=files[0]
#crdownload
file_full_name=check_path+os.sep+file_name
file_ext=os.path.splitext(file_full_name)[-1]
if "crdownload"==str(file_ext.split(".")[1]):
sleep(int(check_interval_sec)) # 休眠一会
continue
if "tmp" == str(file_ext.split(".")[1]):
sleep(int(check_interval_sec)) # 休眠一会
continue
if "exe" == str(file_ext.split(".")[1]):
os.remove(file_full_name)
print("清理exe文件")
continue
for e in check_ext.split("|"):
if e == str(file_ext.split(".")[1]).lower():
return True,file_full_name
else:
sleep(int(check_interval_sec)) # 休眠一会
continue
else:
return False,"多个文件认定是False"
return False,"可能是不存在文件或者是tmp或crdownload文件"
三、核心
核心就是定期检测指定文件夹。 监测过程有很多特例需要判断。