Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 586|回复: 0

python异常处理与断言以及日志模块

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-7-15 20:32:33 | 显示全部楼层 |阅读模式

    python异常处理与断言

    目录:

    1.异常处理

    2.断言(assert)

    3.日志模块(logging)

    4.修改之前的车票信息查询,把日志模块、异常处理加进去

    1.异常处理

    代码如下:

     语法:

      try:

        pass  #可能出现异常的语句

      except Exception as e:  #Exception 全部异常的通称

        print(e)

      finally:  #可选项,不管有没有异常,finally里面的语句都执行

        pass

    #python 异常处理
    try: print("try:") s=input("input:") b=int(s) c=int(input("input2:")) s2=b/c id=int(input("id:")) print([1,2,3][id]) except ValueError as e1: print("ValueError:") print(e1) except ZeroDivisionError as e2: print("ZeroDivisionError:") print(e2) except Exception as e: print(e) finally:    #不管有没有异常,finally里面的语句都执行
        print("finally") print("自己定义错误提示".center(20,"*")) try: print("try:") s=input("input:") b=int(s) c=int(input("input2:")) s2=b/c id=int(input("id:")) print([1,2,3][id]) except ValueError: print("ValueError:") print("输入的值不能转换成整数:") except ZeroDivisionError: print("ZeroDivisionError:") print("被除数不能为0") except Exception as e: print(e) finally: print("finally")

    2.断言(assert)

    如果没有出错,断言语句不执行,不满足条件,不往下走
    运行加-O 忽略全部的断言(不执行断言)

    #断言assert
    print("断言assert:") try: print("try:") a=input("input:") assert a.isdigit(),"输入的a不合法!" b=int(a) assert b!=0,"除数不为0!" r=10/b print("result:",r) id=int(input("id:")) l=[1,2,3] assert id in range(len(l)),"索引超出范围!"
        print(l[id]) except AssertionError as e: print(e) finally:  #不管有没有异常,finally里面的语句都执行 print("finally")

    3.日志模块(logging)

    常用日志级别:info(通知)、debug(调试)、error(错误)、warning(警告)、critical(严重错误)

    #日志模块logging
    import logging logging.basicConfig( #日志级别
        level=logging.DEBUG, #日志格式
        #时间、代码、行号、日志级别、日志信息
        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', #日志时间格式
        #datefmt='%a, %d %b %Y %H:%M:%S',
        #日志存放目录
        filename='logfile.log', #打开日志文件的方式
        filemode="a" ) logging.debug("这是一个调试信息") logging.info("这是一个通知信息") logging.warning("这是一个警告信息") logging.error("这是一个错误信息") logging.critical("这是一个严重错误信息") 

     4.修改之前的车票信息查询,把日志模块、异常处理加进去

    import requests import logging from prettytable import PrettyTable logging.basicConfig( #日志级别
        level=logging.DEBUG, #日志格式
        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', #日志存放目录
        filename='logfile.log', #打开日志文件的方式
        filemode="a" ) url="https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9090"
    try: txt=requests.get(url).text except: print("网络未连接!") #print(txt)
    inf=txt[:-2].split("@")[1:] #print(inf)
    stations={} for record in inf: rlist=record.split("|") stations[rlist[2]]={"cn":rlist[1],"qp":rlist[3],"jp":rlist[4]}  #把车站编码当作key
    def getcode(t): while True: s1=input("%s站:"%t) r1=[] for id,station in stations.items(): if s1 in station.values(): r1.append((id,station)) if r1: break
            print("没有这个车站!") print("请重新输入!") if len(r1)==1: sid=r1[0][0] else: print("你输入的条件比较模糊,请在以下站中进行选择:") for i in range(len(r1)): print(i+1,r1[1]["cn"]) sel=int(input("你的选择:"))-1 sid=r1[sel][0] return sid fromid=getcode("出发") toid=getcode("到达") fdate=input("出发日期(格式:2019-01-01):").strip() qurl=("https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=%s&leftTicketDTO.from_station=%s&leftTicketDTO.to_station=%s&purpose_codes=ADULT")%(fdate,fromid,toid) print(qurl) print("你输入的查询条件是:出发站:{},到达站:{}".format(fromid,toid)) ainf=requests.get(qurl).json()["data"]["result"] #json文件存储当前从出发站到目的站的所有车次的详细信息
    result=[] gaotie=[] huoche=[] for i in ainf: list=i.split("|") checi=list[3] chufa=stations[list[6]]["cn"] mudi=stations[list[7]]["cn"] ftime=list[8] dtime=list[9] sw=list[32] yd=list[31] rw=list[23] yw=list[26] wuzuo=list[28] ed=list[30] yz=list[29] result.append((checi,chufa,mudi,ftime,dtime,ed,yz,wuzuo,yw,rw,yd,sw)) if checi[0] in ["G","D"]: gaotie.append([checi,chufa,mudi,ftime,dtime,sw,yd,ed]) else: huoche.append([checi,chufa,mudi,ftime,dtime,yz,yw,rw,wuzuo]) #print(result)
    
    while True: print("请输入查看信息:1、全部 2、高铁、动车 3、火车 4、退出") show=int(input("请选择:")) if show==1: table=PrettyTable(["车次","出发站","目的站","发车时间","到达时间","商务座","一等座","二等座","硬座","硬卧","软卧","无座"]) for i in result: table.add_row([i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11]]) print(table) elif show==2: table=PrettyTable(["车次","出发站","目的站","发车时间","到达时间","商务座","一等座","二等座"]) for i in gaotie: table.add_row([i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]]) print(table) elif show==3: table=PrettyTable(["车次","出发站","目的站","发车时间","到达时间","硬座","硬卧","软卧","无座"]) for i in huoche: table.add_row([i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8]]) print(table) elif show==4: print("查询结束!") break
        else: print("输入错误请重新输入!")

    日志记录查看:

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-19 11:38 , Processed in 0.068944 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表