python判断在不在列表
作者:王忘杰
全民制作人大家好,我是学习python两天半的练习生王忘杰,喜欢路由交换、linux、网络安全,开整!这是我的第二篇0基础python文章,请大家支持,谢谢~
开发思路
用于监控指定的URL,在我的场景中,我是从腾讯VPS上监控公司宽带出口,当URL访问超时时,即为宽带故障。
设计思路很简单,访问失败发送告警,访问成功发送恢复通知,同时要使用配置文件进行配置,防止持续重复告警。
绘制开发流程图
使用python语言实现
#!/usr/bin/python3import requests
import time
import json
import os# 监测URL是否正常响应def url_check(url): # 当前时间 check_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
try: # 请求URL, 设置3s超时, 忽略SSL证书 r = requests.get(url, timeout=3, verify=False)
if r.status_code == 200:
fo = open(config,"r")
line = fo.read(1)
print(line) #判断配置文件内容 if line == "1":
print("发送报警")
fo.close()
fo = open(config, "w")
fo.write('0')
print("配置重置为0") # 请求响应状态 msg = "监控的URL:%s%sURL恢复状态正常:%s%s监测时间:%s" % (
url, "nn", r.status_code, "nn", check_time) # 推送消息 yun_push(msg)
else:
print("当前配置为",line)
fo = open(config, "w")
fo.write('0')
print("配置重置为0")
else:
fo = open(config, "r")
line = fo.read(1)
print(line)
if line == "1":
print("退出程序")
else:
print("发送报警")
fo.close()
fo = open(config, "w")
fo.write('1')
print("配置重置为1") # 请求响应状态 msg = "监控的URL:%s%sURL访问异常:%s%s监测时间:%s" % (
url, "nn", r.status_code, "nn", check_time) # 推送消息 yun_push(msg)
except:
fo = open(config, "r")
line = fo.read(1)
print(line)
if line == "1":
print("退出程序")
else:
print("发送报警")
fo.close()
fo = open(config, "w")
fo.write('1')
print("配置重置为1") # 请求响应状态 msg = "监控的URL:%s%sURL访问失败,无法连接%s监测时间:%s" % (
url, "nn", "nn", check_time) # 推送消息 yun_push(msg)
def yun_push(content):
url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=用自己的'
s = json.dumps({'msgtype': 'text', 'text': {"content" : content}})
print(requests.post(url, data=s).text)
if __name__ == '__main__': #判断配置文件是否存在,不存在则生成配置文件并退出,配置文件则存在执行 config = './baidu.config'
if not os.path.exists(config):
print("配置文件不存在")
file = open(config,'w')
file.close()
print("配置文件已生成")
else:
print("配置文件存在,执行URL检测")
url_check("https://www.baidu.com/")
运行效果
正式使用
在VPS部署python脚本,并设置定时任务即可
查看文章精彩评论,请前往什么值得买进行阅读互动
","gnid":"96c6a833d821e0468","img_data":[{"flag":2,"img":[{"desc":"","height":"274","title":"","url":"https://p0.ssl.img.360kuai.com/t015394727360c3cdc6.jpg","width":"600"},{"desc":"","height":"616","title":"","url":"https://p0.ssl.img.360kuai.com/t016ff92dc7f2116c3c.jpg","width":"359"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1683810195000,"pure":"","rawurl":"http://zm.news.so.com/41b69145e2771cb08cd67bac9f05abc6","redirect":0,"rptid":"4cdf902d8b0d23e5","rss_ext":[],"s":"t","src":"什么值得买","tag":[{"clk":"ktechnology_1:机器人","k":"机器人","u":""}],"title":"0基础上手python编程,实践URL监控+企业微信机器人告警
欧菡呼4440python 列表的条件判断 -
宰歪胆17060632075 ______ import itertools a=[3,4,5] b=[3,5] #查找 [3,5] in [3,4,5] print 'b is in a:', tuple(b) in list(itertools.combinations(a,2)) #查找 [3,5] in [3,4,5] 以及 [5,3] in [3,4,5] a=[3,4,5] b=[5,3] print 'b is in a:', tuple(b) in list(itertools.permutations(a,2))#数字2 根据你的b列表的长度而定 如果长度是2 就填2 是3 就填3
欧菡呼4440python使用in操作符时元组和数组的区别分析 -
宰歪胆17060632075 ______ 在python中可以使用in符号判断指定的元素是否存在于列表中,但我发现元组和数组存在区别,下面是详细实验结果.>>> 'test' in ['replace','test'] True>>> 'test' in ('replace','test') True>>> 'test' in ['test/codes','replace'] False>>> 'test' in ('test/codes','...
欧菡呼4440python判断数据框有几行几列 -
宰歪胆17060632075 ______ 如果你的第一列是group by好的,那用一个last_row_index和current_row_index可以O(n)搞定合并,譬如说 int last=0; int current=1; while(current<numbers.GetLengths(0)) { if(numbers[last][0]==numbers[current][0]) { for(int i=1;i<numbers.GetLengths...
欧菡呼4440python中如何取一列数最大值– 智联问道 -
宰歪胆17060632075 ______ int max = 第一个数 while(没读完) 当前数字是否比 max 大, 如果是,max = 当前数字 最后max就是最大值.
欧菡呼4440python 判断一个列表中有多少个元素在另外一个列表 -
宰歪胆17060632075 ______ 你这个标题怎么跟内容不一致.判断一个列表中的元素是否都在另一个列表中,用集合就可以了.>>> l1 = ['a','b','c']>>> l2 = ['d', 'b','c','a']>>> set(l1).issubset(set(l2)) true>>>
欧菡呼4440有没有这样的程序,或者用Python代码也行.有一个excel的数据,查询另一个excel表里有没 -
宰歪胆17060632075 ______ import pandas as pd excel1_data = pd.read_excel( 文件路径) excel2_data = pd.read_excel(文件路径)# 假设数据 X 来源于 excel1_data ,判断是否在 excel2_data中 if X in excel2_data: print(excel2_data[excel2_data.values == X]) #会返回该数据所在的行 以及所有列,你再自己判断下列号就行了
欧菡呼4440Python 判断列表内的元素是否在同一直线上的方法 -
宰歪胆17060632075 ______ 讲一下思路 首先确定输入的值在列表中的位置,用一个元组来表示(1,2) 用一个列表保存在一条直线上的元组位置组合 inLine = [set([(0,0),(0,1),(0,2)]) ,set([(1,0),(1,1),(1,2)])] 如果用户输入3个值得位置在inLine列表中,则可以连成一条直线 使用set的好处在于无需考虑3个值得顺序
欧菡呼4440Python判断列表是否已排序的各种方法及其性能分析 -
宰歪胆17060632075 ______ 本文基于Python2.7语言,给出判断列表是否已排序的多种方法,并在作者的Windows XP主机(Pentium G630 2.7GHz主频2GB内存)上对比和分析其性能表现. 一. 问题提出 Haskell培训老师提出一个问题:如何判断列表是否已经排序? 排序...
欧菡呼4440怎么查找列表中元素所在的位置(如果差找不到不报异常) Python3.6 -
宰歪胆17060632075 ______ A=['a','b','c','d'] for i,v in enumerate(A): if v == 'e': print(i) print(-1)python
欧菡呼4440virtuoso skill怎么判断元素在不在列表中 -
宰歪胆17060632075 ______ virtuoso skill怎么判断元素在不在列表中 输入a、b、c3个整数,按大小顺序输出.swap(int *pt1,int *pt2) {int temp; temp=*pt1;*pt1=*pt2;*pt2=temp; } exchange(int *q1,int *q2,int *q3) { if(*q1<*q2)swap(q1,q2); if(*q1<*q3)swap(q1,q3); if(*q2<*q3)swap...