python高级1

异常的捕获和处理

1.什么是异常

异常就是代码中的错误,例如:语法错误、缩进错误、逻辑错误等

异常会中断代码的执行

2、异常的处理

为了解决代码出现问题就不会执行的情况,然后作出的特殊的操作

异常例子:

i = 4 / 0
print(i)
Traceback (most recent call last):
  File "D:/code/class59/day09/demo02.py", line 2, in <module>
    i = 4 / 0
ZeroDivisionError: division by zero
print("这是模块文件的开始")
zhangwuji
print("这是模块文件的结束")
Traceback (most recent call last):
  File "D:/code/class59/day09/demo01.py", line 3, in <module>
    zhangwuji
NameError: name 'zhangwuji' is not defined
这是模块文件的开始

异常捕获的语法

try:
    保护的代码
except 异常的类型:
    print("对于上述异常的处理")

案例:处理单个异常

try:
    zhangwuji
    i = 4 / 0
    print(i)
except ZeroDivisionError:
    print("我是处理除零错误的")

案例:处理多种异常类型

try:
    i = 4 / 0
    print(i)
    zhangwuji
# 一个Except只能处理一种异常类型
except NameError:
    print("我是处理名字没有定义的")
except ZeroDivisionError:
    print("我是处理分母不能为零的")

案例:处理所有的异常类型

# 处理所有的异常类型
try:
    zhangwuji
    i = 4 / 0
    print(i)
# Exception可以处理任意类型的异常
except Exception:
    print("我可以处理任意类型的异常")

案例:获取异常的详细信息

# 获取异常的详细信息
try:
    zhangwuji
    i = 4 / 0
    print(i)
# Exception可以处理任意类型的异常
except Exception as e:
    print("我可以处理任意类型的异常")
    # ame 'zhangwuji' is not defined 输出的只是异常的详细信息
    print(e)

案例:捕获所有异常类型简写

import traceback
try:
    i = 4 / 0
    print(i)
    zhangwuji
# Exception可以处理任意类型的异常
# except后面不写Exception,也是捕获任意类型的异常,这是简写
# 简写的时候,在获取异常的详细信息的时候直接使用as 就不行了,要利用内置traceback模块获取内容
except:
    print("我可以处理任意类型的异常")
    # 获取本次异常的报错信息
    print(traceback.format_exc())

3.else和finally子句

import traceback
try:
    i = 4 / 0
    print(i)
    zhangwuji
# Exception可以处理任意类型的异常
# except后面不写Exception,也是捕获任意类型的异常,这是简写
# 简写的时候,在获取异常的详细信息的时候直接使用as 就不行了,要利用内置traceback模块获取内容
except:
    print("我可以处理任意类型的异常")
    # 获取本次异常的报错信息
    print(traceback.format_exc())
# try语句块下面缩进的代码没有异常,才会执行else下面的语句块
else:
    print("我是else语句")
# finally语句必须放在else后面
# finally下面的语句块是有没有错误都要执行
finally:
    print("我是finally语句")

4.异常的就近捕获原则

# 下面的案例,是有就近原则,
def f1():
    try:
        print("*********f1开始********")
        张无忌
        print("*********f1结束********")
    except:
        print("f1捕获了!!!")
def f2():
    try:
        print("*********f2开始********")
        f1()
        print("*********f2结束********")
    except:
        print("f2捕获了!!!")
def f3():
    try:
        print("*********f3开始********")
        f2()
        print("*********f3结束********")
    except:
        print("f3捕获了!!!")
f3()

5.异常的抛出

# 村
def f1():
    try:
        print("*********f1开始********")
        张无忌
        print("*********f1结束********")
    except:
        # 抛出异常
        raise
# 镇
def f2():
    try:
        print("*********f2开始********")
        f1()
        print("*********f2结束********")
    except:
        raise
# 县
def f3():
    try:
        print("*********f3开始********")
        f2()
        print("*********f3结束********")
    except:
        # print("f3捕获了!!!")
        raise
f3()

os模块

import os
# Windows操作系统返回的是 nt “Microsoft Windows NT”
# print(os.name)
# 查看系统的环境变量
# print(os.environ['JAVA_HOME'])
#
# for root, dirs, files in os.walk(".", topdown=False):
#     '''
#     root:路径
#     dirs :[]  文件夹
#     files : 文件
#     '''
#     print(root)
#     print(dirs)
#     print(files)
#     print("***********************")
# 列出某个目录下的文件(文件名)或者文件夹
# print(os.listdir('F:\桌面壁纸'))
# 删除目录(文件夹)
# os.rmdir("F:\桌面壁纸\新建文件夹")
# 删除文件
# os.remove("F:\桌面壁纸\新建 XLS 工作表.xls")
# 对文件进行重命名
# os.rename(r"F:\桌面壁纸\cRwPlRY.jpg",r"F:\桌面壁纸\4.jpg")
# 创建目录
# os.mkdir("F:\桌面壁纸\hello")
# 获取当前目录 (显示的是绝对路径)
# print(os.getcwd())
# 路径的拼接
# p1 = os.path.join(r"F:\视频","python","str1.py")
# print(p1)
# 将路径分隔符号// 转换为\
# new_path = os.path.abspath(r"F://webtest//autotestpytest//outFile//log")
# print(new_path)
# 输出当前路径的最底层目录
# a = os.path.basename(r'F:\桌面壁纸\hello')
# print(a)
#将传入的路径以最后一个分隔符,进行分割,形成一个元组,
# ('F:\\webtest\\autotestpytest', 'libs')
# c = os.path.split(r'F:\webtest\autotestpytest\libs')
# print(c)
#用于判断传入的路径是否存在 , 存在则返回true 不存在则返回false
# print(os.path.exists(r"D:\tools12"))
#判断是否为绝对路径,如果是绝对路径则返回TRUE ,否则返回false
# print(os.path.isabs(r'D:\tools'))
#判断传入的是不是文件
# print(os.path.isfile(r'D:\tools\WebStorm 2020.1.1.rar'))
# 判断传入的是不是路径
# print(os.path.isdir(r"D:\tools"))

random

import random
# 生成一个指定范围的随机整数, 整体是闭区间
# print(random.randint(1, 2))
# 随机从列表中取出一个元素
# names = ["马蓉", "李小璐", "金莲"]
# print(random.choice(names))
# 生成0到1直接的随机小数
# print(random.random())
# 生成一个指定范围之内随机整数,左闭右开的区间
# print(random.randrange(1, 3))
# names = ["马蓉", "李小璐", "金莲", "白百合"]
# # 从当前列表中随机取三个值
# print(random.sample(names, 3))
# uniform 在指定范围内随机生成一个浮点数
print(random.uniform(10, 14))

time模块

# 时间戳
import time
# # 这是1970年1月1号 0 0 0 到现在度过秒数
# print(time.time()) # 1649408811.9439282
# 返回的内容,当成一个元组来处理即可
"""
(tm_year=2022, tm_mon=4, tm_mday=8, tm_hour=17, tm_min=9, tm_sec=4, tm_wday=4, tm_yday=98, tm_isdst=0)
tm_year :年
tm_mon :月(1-12)
tm_mday :日(1-31)
tm_hour :时(0-23)
tm_min :分(0-59)
tm_sec :秒(0-59)
tm_wday :星期几(0-6,0表示周日)
tm_yday :一年中的第几天(1-366)
tm_isdst :是否是夏令时(默认为-1)
"""
# 根据下标取值即可
# print(time.localtime())
# 休眠 代码执行到这一行对停顿3秒中在往后执行,单位秒
# print("**********开始********")
# time.sleep(3)
# print("**********结束********")
"""
%a  本地星期名称的简写(如星期四为Thu)      
%A  本地星期名称的全称(如星期四为Thursday)      
%b  本地月份名称的简写(如八月份为agu)    
%B  本地月份名称的全称(如八月份为august)       
%c  本地相应的日期和时间的字符串表示(如:15/08/27 10:20:06)       
%d  一个月中的第几天(01 - 31)  
%f  微妙(范围0.999999)    
%H  一天中的第几个小时(24小时制,00 - 23)       
%I  第几个小时(12小时制,0 - 11)       
%j  一年中的第几天(001 - 366)     
%m  月份(01 - 12)    
%M  分钟数(00 - 59)       
%p  本地am或者pm的相应符      
%S  秒(00 - 61)    
%U  一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之    前的所有天数都放在第0周。     
%w  一个星期中的第几天(0 - 6,0是星期天)    
%W  和%U基本相同,不同的是%W以星期一为一个星期的开始。    
%x  本地相应日期字符串(如15/08/01)     
%X  本地相应时间字符串(如08:08:10)     
%y  去掉世纪的年份(00 - 99)两个数字表示的年份       
%Y  完整的年份(4个数字表示年份)
%z  与UTC时间的间隔(如果是本地时间,返回空字符串)
%Z  时区的名字(如果是本地时间,返回空字符串)       
%%  ‘%’字符  
"""
# 格式化输出时间日期 2022-04-08 17:19:04
s = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(s)
import datetime
# 获取内容 输出的结果是2022-04-08 17:21:29.960512
gettime = datetime.datetime.now()
print(gettime)
# 格式化输出
print(gettime.strftime("%Y-%m-%d %H:%M:%S"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值