python模块、文件、异常处理

32 篇文章 3 订阅
24 篇文章 0 订阅

一、模块和包管理

二、文件操作

三、路径处理

python里面的os模块有许多方法让我们通过代码实现创建,删除和更改目录,具体罗列如下:

方法描述
os.path.dirname()返回文件/目录所在路径
os.path.join(a, b)连接两个部分的路径,组成一个完整的路径
os.getcwd()显示当前的工作路径
os.chdir()切换工作路径
os.mkdir()在某个目录下创建一个新目录
os.rmdir()获取当前路径下的目录列表,返回列表格式数据
os.path.isdir()判断当前文件是否是目录,返回布尔值
os.path.isfile()判断当前文件是否是文件,返回布尔值

魔法变量:__file____name__
__file__:所在文件的绝对路径
__name__:所在模块(文件)的模块名,(如果是在程序启动文件中的话,那么值为__main__

四、异常处理

1. 什么是异常

当程序运行中检测到一个错误时,无法继续执行,出现了一些错误的提示,这就是所谓的“异常”

  1. 电脑中的程序异常
  2. 代码中的异常
    • 变量没定义
    • 语法错误
    • 键不存在
    • 没找到模块
    • 类型错误

2. 异常分析

1) 异常类型

BaseException所有异常的基类
+--SystemExit解释器请求退出
+--KeyboardInterrupt用户中断执行(通常是输入^C)
+--GeneratorExit生成器(generator)发生异常来通知退出
+--Exception常规错误的基类

3. 异常捕获

1) 异常捕获try–except:

try:
	此处是有可能出现异常的代码
except NameError:
	此处是捕获到异常之后的处理方案

备注:若except后面不写异常类型,默认捕获所有的异常类型
若想打印捕获到的异常信息,则:

except...as e:
	print(e)

2) 捕获多个指定的异常类型

方式一:

try:
	有可能出现异常的代码
except (NameError, ValueError):
	捕获到以上两种异常的处理方案

方式二:

try:
	有可能出现异常的代码
except ValueError:
	捕获到ValueError异常的处理方案
except NameError:
	捕获到NameError异常的处理方案

方式三:
如果不确定捕获的类型,我们可以用Exception捕获所有类型错误

try:
	print('我在学习python')
	print('我的名字是{}'.format(name))
except Exception as e:
	print(e)

3)异常处理中的else和finally

  1. try–except–else
try:
	print('我在学习python')
	print('我的名字是{}'.format(name))
except NameError as e:
	print(e)
else:
	print('没有捕获到异常")

else在没有捕获到异常的情况下运行

  1. try–except–else–finally

finally 不管有没有捕获到异常都会运行

try:
	print('我在学习python')
	print('我的名字是{}'.format(name))
except NameError as e:
	print(e)
else:
	print('没有捕获到异常")
finally:
	print('不管有没有捕获到异常都会运行")

4)主动抛出异常raise
应用场景:在接口测试中会用到
语法格式:

raise异常类型(异常信息)
raise NameError('这个是自己主动触发的异常')

4. 断言assert

断言是assert后面跟一个条件语句,如果条件不成立就会触发断言异常

assert语句用来声明某个条件是真的
assert语句失败的时候,会引发AssertionError

assert 表达式

通过assert 来断言一个字符串是否在另一个字符串中:

str1 = 'hello python'
assert  'hello' in str1

抛出断言异常后,想让它提示一些相关信息,则在assert 语句的最后面把提示信息写上即可

str1 = 'hello python'
assert  'hello' in str1,'not in str1'

总结:

try:
	可能出现异常的代码
except Exception:
	捕获到异常时运行的代码
else:
	没有捕获到异常时运行的代码
finally:
	不管有没有异常都会运行的代码
raise:主动抛出异常

assert:断言

try的工作原理:当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常

如果try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)
如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)
如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句

五、程序debug调试

代码出错后,需要通过调试找错误并解决问题
调试方法:
print大法:
在错误代码前一行,使用print输出对应的数据

使用pycharm打断点进行debug调试
注意:断点要打到可以执行到的那行代码上面,如果代码执行不到(条件判断),打断点没有任何意义
F7:往下走一步(遇到函数调用,会进入到函数内部)
F8:往下走一步(遇到函数调用,不会进入到函数内部,直接得出函数调用的结果)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值