(六) 学习笔记:python异常处理和os模块常用函数总结
2018-04-03 本文已影响26人
fanhang64
异常处理
当程序遇到问题的时候, 为了不让程序停止或者直接报错, 跳过错误继续向下执行, 一般情况下, 在Python无法正常处理程序时就会发生一个异常。
主体结构:
try:
code # 可能出现的异常的代码块
except: # 只要出现错误就会走except 捕获所有错误
code # 处理异常
(1) 捕获特定错误的代码段
实例:
try:
可能出现异常的代码块
except NameError: # 捕获NameError错误
处理异常
(2) 多重捕获
会进行多次判断, 如果是对应某一个错误expect就会执行, 如果都没有满足走最后一个expect
实例:
try:
# name = 1 # 注释掉
print(name)
expect NameError: # 当注释掉name时候,会走上面的expect
print('报NameError错误')
except ValueError:
print('报ValueError 错误')
except (NameError, ValueError): # 可以写成元组的形式, 捕获多个错误
print('报错了')
except (NameError, ValueError) as e: # 可以将错误信息打印出来
print('报错了')
print(e) # name 'name' is not defined
print(type(e)) # <class 'NameError'>
except:
print('报错')
注意: 如果代码出现多个错误, 只会抓捕第一个对应的错误
(3) 配合else的使用
当代码执行完try
没有错误的时候会走else
实例:
try:
pass
expect:
pass
else:
当代码没有出现错误的时候, 走这里, 可以用来处理一些打开的连接和资源
(4) finally的使用
无论代码是否出现异常都会走finally
实例:
try:
pass
expect:
pass
else:
pass
finally: # 都会执行这里
print('over')
(5) 使用raise关键字抛出异常
# 格式
raise 错误(错误说明)
# 实例
raise NameError(‘not found’)
断言(assert)
assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达式为假。
用法:
assert condition
# 上面的写法等同于
if not expression:
raise AssertionError
实例:
assert 1!=1
assert 2+2==2*2
assert range(4)==[0,1,2,3]
os模块常用函数总结
函数名 | 函数说明 |
---|---|
os.name | 获取当前操作系统的类型, nt->windows, posix->linux,mac |
os.environ | 获取当前操作系统的所有环境变量 |
os.getcwd() | 获取当前的工作路径 |
os.listdir(path) | 以列表的形式返回目录的文件 |
os.mkdir(path) | 创建新目录, 如果文件存在则报错 |
os.rmdir(path) | 删除空目录, 如果找不到目录报错 |
os.rename(src, dst) | 重命名 |
os.remove(filename) | 删除文件 |
os.system(cmd) | 执行shell命令 |
os.path.join(dir, filename) | 拼凑完整路径 |
os.path.isdir(path) | 判断是否为目录 |
os.path.isfile(path) | 判断是否为文件 |
os.path.splitext(path) | 获取文件的后缀名(例如a.txt中的.txt), 返回元组 |
os.path.exists(path) | 判断文件或路径是否存在 |
os.path.getSize(path) | 获取文件的字节数 |
os.path.dirname(path) | 获取目录名称 |
os.path.absolate(path) | 获取当前文件的绝对路径 |
os.path.split(path) | 拆分路径(将路径和文件名拆分) 返回元组形式 |