广州市白云区建设局 网站,Wordpress aws 博客,免费wordpress商城主题下载地址,网站功能有哪些Python捕获异常
当程序运行时#xff0c;因为遇到未知的错误而导致中止运行#xff0c;便会出现Traceback 消息#xff0c;打印异常。异常即是一个事件#xff0c;该事件会在程序执行过程中发生#xff0c;影响程序的正常执行。一般情况下#xff0c;在Python 无法正…
Python捕获异常
当程序运行时因为遇到未知的错误而导致中止运行便会出现Traceback 消息打印异常。异常即是一个事件该事件会在程序执行过程中发生影响程序的正常执行。一般情况下在Python 无法正常处理程序时就会发生一个异常。异常是Python 对象表示一个错误。当Python 脚本发生异常时我们需要响应处理它否则程序会终止执行。
捕获异常
如果一个语句发生了错误或异常跳过该语句的执行执行另外的语句
捕获异常使用关键字try except语句
try关键字使用来监控代码的
如果是try里面的代码出现异常就会被except关键字捕捉到并执行except里的语句
try:numint(input())
except:print(请输入一个整数)numint(input())如果是用户输入的是字符串或者特殊字符那么就会报错异常被except捕捉到后就会打印让用户输入整数并且再次输入
异常的类型
except关键字是可以捕捉所有异常的
当然我们也可以控制捕捉的异常
下面是常见的异常
异常描述SyntaxError语法错误NameError未声明/初始化对象IndexError序列中没有此索引KeyboardInterrupt用户中断执行CtrlCEOFError没有内建输入到达EOF 标记CtrlD 不适用windows 系统IOError输入/输出操作失败ValueError当操作或函数接收到具有正确类型但值不适合的参数 并且情况不能用更精确的异常例如 IndexError来描述时将被引发。TypeError字符串与整数相加时触发。
如果说我只想要捕获语法错误
try:numint(input())
except SyntaxError:print(请输入一个整数)numint(input())想要捕获什么异常就可以在except后面加入就可以了
scapy模块
scapy 模块能够发送、捕获、分析和铸造网络数据包
Windows 下安装scapy
python -m pip install scapy在Linux下安装
sudo apt install scapy启动之后可能会需要安装pyX模块
pip install pyX 可能会出现python虚拟环境报错
WARNING: Running pip as the root user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv解决方法: 下载虚拟环境
apt install python3.11-venvpython3 -m venv tutorial-env.创建一个虚拟环境中决定在目录里你想要的 把它和运行的 venv 模块作为一个脚本用的目录路径 最后在执行
source tutorial-env/bin/activate就可以成功安装了
方法简绍
发送数据包的函数说明sr(pkt)发送数据包接收所有返回包sr1(pkt)发送数据包接收一个返回包send(pkt)发送数据包不等待返回包srp(pkt)发送2 层数据包等待回应pkt)发送数据包不等待返回包srp(pkt)发送2 层数据包等待回应sendp(pkt)发送2 层数据包不等待返回包
案例探测网段内ip存活脚本
from scapy.all import *
from scapy.layers.inet import IP, TCP,ICMP
import logging
logging.getLogger(scapy.runtime) .setLevel(logging.ERROR)
attack_net input(请输入目标网段或IP: )
self_ip input(请输入本机IP: )
list_netattack_net.split(.)
if list_net[3]0/24 or list_net[3]*: #如果是0/24或*探测该网段下全部ipfor num in range(1,255):istr(num)attack_netattack_net[0:attack_net.rfind(.)1:1]attack_netf{attack_net}{num}pkt IP(dstattack_net,srcself_ip)/ICMP()ressr1(pkt,verboseFalse, timeout1) #每个ip探测延迟1秒if res:print(f[]主机存活{attack_net})print([]主机存活扫描完成)
elif list_net[3]!: #如果不为空就只探测该主机pkt IP(dstattack_net, srcself_ip) / ICMP()res sr1(pkt,verboseFalse)if res and res.type0:print(f[]主机存活{attack_net})else:print(请输入正确的网段或IP)
成果如下