2019/08/30 python异常及库用法(08)

在这里插入图片描述
异常时运行时的错误。一般两种
1.语法错误(bash -x 检查语法错误,类似dryrun模式)
2.逻辑错误

异常的作用在这里插入图片描述
有些异常可以忽略,但是python解释器遇到任何异常都拒绝继续运行代码在这里插入图片描述在这里插入图片描述
打开不存在文件,引用不存在名称都会报异常在这里插入图片描述在这里插入图片描述在这里插入图片描述
goto是破坏架构化编程的罪魁祸首之一在这里插入图片描述在这里插入图片描述
使用try语句来监测代码块,一旦监测到异常,将会被捕获在这里插入图片描述
避免程序自己遇到意外中止,监测到异常后,在finally写些代码,比如正常打开文件之类的在这里插入图片描述在这里插入图片描述
可以结合起来,try的时候监控代码,监控异常,怎么办,每一种异常都有特定的处理方式
在这里插入图片描述在这里插入图片描述
如果出现IO错误则print在这里插入图片描述
如果抛出第一种异常怎么处理,如果第二种异常该怎么处理,如果不识别的异常,就默认异常处理机制,如果代码没有异常抛出,才会运行else,任何地方被异常处理,else都不会被运行在这里插入图片描述
无论异常是否发生,finally自居都会执行在这里插入图片描述在这里插入图片描述在这里插入图片描述
无论有没有发生错误,最后文件都要关闭,finally不会阻止异常发生的在这里插入图片描述
不管怎么样,finally都会运行在这里插入图片描述在这里插入图片描述
想要使用自定义异常,raise语句即可
接受两个参数,seq2,seq1
如果序列1或者序列2是空的,就触发异常,告诉你都需要不为空
在这里插入图片描述
raise +异常名称,“信息”
生成一个元组组成的序列 return for x2 in seq2 是一个嵌套循环,相当于多向式相乘
在这里插入图片描述在这里插入图片描述
浮点错误
在这里插入图片描述
除0错误
在这里插入图片描述
溢出错误
在这里插入图片描述在这里插入图片描述在这里插入图片描述
索引异常
在这里插入图片描述
键异常
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
除了异常类还有两个语句叫断言语句
assert 和with-as
断言语句主要在程序种引入调试代码
在这里插入图片描述在这里插入图片描述

try:
代码块
except IOError :如果出现IOError
就怎么做
except NameError :
就怎么做
else:没有异常
怎么做
finally:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
整个程序运行有顶层文件做程序入口i,模块两类,标准的,自开发的
模块封装起来可以叫包
在这里插入图片描述
导入模块使用import语句在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
每个包里可以有多个文件,但是最少有init__.py为空的,固定语法格式,只有某个目录既有INIT.PY又有模块文件这个目录才会被当做包在这里插入图片描述
包的目录必须在搜索路径的某个路径下,所以整个python代码可能存在多个包,每个包内部都有不止一个模块,而后应该有init__py在这里插入图片描述在这里插入图片描述
模型执行有两种,
1.自己作为主程序直接执行
2.一个模块文件被主程序导入以后,才能执行
在这里插入图片描述
可以检测模块自己当前name属性的值在这里插入图片描述
如果name=main,就运行testfunc,否则这段代码不会被调用或者直接执行的在这里插入图片描述pypi可以理解为python的程序索引库,互联网有这个网站,程序员写的模块可以发布到上面在这里插入图片描述
打包模块常用的是distutils,distutils本身就是python模块在这里插入图片描述在这里插入图片描述
打包成gz格式和zip都可以在这里插入图片描述
将来很可能会遇到别人的模块
安装第三方模块的方式有两种
1.使用easyinstall
2.pip 类似(yum)
在这里插入图片描述
easy install 不怎么好用,一般用pip
安装python-pip
在这里插入图片描述在这里插入图片描述
可以直接用yum安装在这里插入图片描述是python2的版本在这里插入图片描述
如果用pip3还需要去网上下载在这里插入图片描述
查看有没有python3的pip在这里插入图片描述在这里插入图片描述
列出所有已安装模块
在这里插入图片描述
可以搜索对象安装在这里插入图片描述
有很多包含mysql字符串的模块

可以直接下载python3的包,自带piphttps://www.python.org/downloads/release/python-352/

https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz

安装开发环境,准备编译在这里插入图片描述在这里插入图片描述在这里插入图片描述
为了避免和系统自带的python冲突,最好指明路径在这里插入图片描述
等会写代码就可以使用3.5进行在这里插入图片描述
一些依赖的包在这里插入图片描述
make install会自动安装pip
bin目录下就有pip3了,
在这里插入图片描述
修改一个环境变量在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
查看是否有ipython 的模块
直接安装ipython模块
在这里插入图片描述在这里插入图片描述
可能多版本的问题,使用pip3来搜索mysql在这里插入图片描述在这里插入图片描述
pymysql用的比较多,能让python代码链接mysql的常用驱动
使用就安装pyMysql
在这里插入图片描述在这里插入图片描述在这里插入图片描述pymsql有很多的方法,让你链接mysql服务器,并且通过mysql数据服务器实现数据交互的在这里插入图片描述
安装mysql在这里插入图片描述
创建用户在这里插入图片描述在这里插入图片描述有点问题,就使用自己的交互式接口来使用
在这里插入图片描述在这里插入图片描述
做游标的
在这里插入图片描述在这里插入图片描述
连接时传递的参数有哪些
在这里插入图片描述在这里插入图片描述
初始化一个连接对象在这里插入图片描述
生成的是个对象就需要保存下来
数字不能加引号!
在这里插入图片描述
创建数据库在这里插入图片描述
**现在conn成为对象,有很多方法
**在这里插入图片描述在这里插入图片描述在这里插入图片描述
基于游标进行查询,想要查询数据就要找游标
下面都是游标的操作方法
在这里插入图片描述如果表不存在就创建,tb1,要把id设置主键,三引号表示跨行在这里插入图片描述
现在就已经创建好表了在这里插入图片描述
插入数据,名称用反引号在这里插入图片描述在这里插入图片描述在这里插入图片描述
数据已经写入没有看到是因为没有提交修改,会打开一个事务的在这里插入图片描述在这里插入图片描述
每一次游标创建的时候只是在缓冲当中,要想能看到,就需要提交操作,使用conn.commit

也可以基于游标进行查询操作,3查询出来三行,查询的数据可能在缓冲区当中,需要基于cursor的一个命令来把数据取出来在这里插入图片描述
使用fetchone或获取数据,一次取一行在这里插入图片描述
fetchall一次把数据都取出来,但是现在已经取完了在这里插入图片描述
可以再重新取一次在这里插入图片描述
不想要了,先关闭游标,再关闭链接,这时候才正式把链接关了在这里插入图片描述
DB需要事先存在否则会出错
链接以后需要创建一个游标
任何做的修改,都需要提交,否则都在缓冲当中
提交以后可以继续执行其他语句
不想看了,可以先关闭游标,再关闭链接
整个是持久链接的方式,链接会一直存在
在这里插入图片描述这就是如何用python链接数据库的
跟php程序员类似,也要创建一个链接对象,创建一个链接,链接对象再创建游标,基于游标完成各种sql语句的执行
查看数据要使用fetch才能取得,
fetchone()一次取一行
fetchall一次取所有行,保存一个元祖返回(但是占用内存大)
也可以把取得的结果回存到mysql数据库服务,使用刚才的create,insert,update等
作业:刚才的代码用python文件写出来
在这里插入图片描述
要想能够建立ssh链接,类似ansible,ansible就是用的python写的
需要使用paramiko模块
是一个著名的支持ssh并行链接的模块
在这里插入图片描述
没有合适的版本在这里插入图片描述
已经显示3.5了在这里插入图片描述
现在就把ipython装上去了在这里插入图片描述
查看有没有之前按爪个的paramiko
在这里插入图片描述
语法着色漂亮很多,
可以尝试用函数定义函数,比如可以基于ssh协议给其他主机传递文件
在这里插入图片描述

可以基于某种方式来连接主机,ssh对象中的connect放啊在这里插入图片描述
现在表示创建了一个基于paramiko库的,创建一个链接至ssh服务器的客户端的对象,怎么连接还需要还有账号密码来连接
基于connect链接,可以指定一个ssh主机,要指明主机名。用户名。密码
抛出的异常是因为第一次链接需要问你是否接受,这里没有交互所以就报错,一看不在已知的主机中就抛出异常

在这里插入图片描述
有个方法可以设定当主机秘钥不认识的时候,让它忽略
**策略有两种,
rejectpolicy 默认,不认识就拒绝了
autoaddpolicy自动添加
**在这里插入图片描述在这里插入图片描述
可以把刚才创建的ssh链接设定一个策略
autoaddpolicy自动添加
在这里插入图片描述
现在就可以基于ssh这样一个对象进行操作了
应该有一个打开sftp的方法。
打开也给传输文件,可以创建一个新的基于sftp,通道,基于这个通道可以传递一个文件上去
在这里插入图片描述在这里插入图片描述在这里插入图片描述
etc是远程服务器的路径,把整个文件放到了一个列表中,可以把取得的结果保存到一个变量上,而后对这写文件做处理在这里插入图片描述
能取出文件列表,就能上传文件
put一个本地文件到远程哪个目录下
在这里插入图片描述在这里插入图片描述
上传本地的fstab到远程的tmp下
提示出的是权限模型,访问时间
在这里插入图片描述
到远程主机查看有没有文件在这里插入图片描述
result可以把传输结果保存
不空是真,为空是假
表示上传没有问题
上传成功即可关闭,先把ftp接口关闭,再去关闭ssh.close
这就是基于paramiko来完成ssh远程主机完成上传操作的
在这里插入图片描述
写一段代码,基于函数来定义在这里插入图片描述
def定义一个函数putfile
ssh=创建一个客户端对象
ssh.setxxx_prolicy调用忽略的策略
ssh。connect链接
链接以后,可以在里面打开ftp链接,上传文件,
定义两个变量,本地文件,和远程文件路径
上传文件用if判断,是否成功
成功失败最后都需要关闭close

函数只有被调用才能执行
在这里插入图片描述在这里插入图片描述
已经传递完成了在这里插入图片描述
将来可以写脚本备份一下文件,传递到远程主机上
可以用urllib把网站每个链接都抓下来,下载到本地,网络爬虫可以这么做
socket,线程编程需要熟悉thread库,正则表达式库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值