一、模块和包管理
二、文件操作
三、路径处理
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. 什么是异常
当程序运行中检测到一个错误时,无法继续执行,出现了一些错误的提示,这就是所谓的“异常”
- 电脑中的程序异常
- 代码中的异常
- 变量没定义
- 语法错误
- 键不存在
- 没找到模块
- 类型错误
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
- try–except–else
try:
print('我在学习python')
print('我的名字是{}'.format(name))
except NameError as e:
print(e)
else:
print('没有捕获到异常")
else
在没有捕获到异常的情况下运行
- 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:往下走一步(遇到函数调用,不会进入到函数内部,直接得出函数调用的结果)