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

python异常处理与断言以及日志模块,第1张

概述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/cid=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/cid=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 忽略全部的断言(不执行断言)#断言assertprint("断言assert:")try:print("try:")a=input("input:")assert a.isdigit(),"输入的a不合法!"b=int(a)assert b!=0,"除数不为0!"r=10/bprint("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(严重错误)#日志模块loggingimport logginglogging.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 requestsimport loggingfrom prettytable import PrettyTablelogging.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).textexcept: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]} #把车站编码当作keydef 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:breakprint("没有这个车站!")print("请重新输入!")if len(r1)==1:sid=r1[0][0]else:print("你输入的条件比较模糊,请在以下站中进行选择:")for i in range(len(r1)):print(i+1,r1[i][1]["cn"])sel=int(input("你的选择:"))-1sid=r1[sel][0]return sidfromid=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("查询结束!")breakelse:print("输入错误请重新输入!")日志记录查看: 

 语法:

  try:

    pass  #可能出现异常的语句

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

    print(e)

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

    pass

(=input(==int(input(=b/=int(input(([1,2,3((: ((.center(20,(=input(==int(input(=b/=int(input(([1,3((((()

2.断言(assert)

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

((=input( a.isdigit(),= b!=0,=10/(=int(input(=[1,3 ID range(len(l)), ()

3.日志模块(logging)

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

level= format= filename= filemode=)

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

prettytable level= format= filename= filemode===(inf=txt[:-2].split()[1stations= record =record.split(2]]={:rList[1],:rList[3],:rList[4]} =input(%= ID,station s1 (( len(r1)==1=( i (i+1,r1[i][1][=int(input())-1==getcode(=getcode(=input(=()%(=requests.get(qurl).Json()[][] result=== i =i.split(=List[3=stations[List[6]][=stations[List[7]][=List[8=List[9=List[32=List[31=List[23=List[26=List[28=List[30=List[29 checi[0] [,

<span >while<span > True:
<span >print(<span >"<span >请输入查看信息:1、全部 2、高铁、动车 3、火车 4、退出<span >"<span >)
show=int(input(<span >"<span >请选择:<span >"<span >))
<span >if show==1<span >:
table=prettytable([<span >"<span >车次<span >",<span >"<span >出发站<span >",<span >"<span >目的站<span >",<span >"<span >发车时间<span >",<span >"<span >到达时间<span >",<span >"<span >商务座<span >",<span >"<span >一等座<span >",<span >"<span >二等座<span >",<span >"<span >硬座<span >",<span >"<span >硬卧<span >",<span >"<span >软卧<span >",<span >"<span >无座<span >"<span >])
<span >for i <span >in<span > 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<span >]])
<span >print<span >(table)
<span >elif show==2<span >:
table=prettytable([<span >"<span >车次<span >",<span >"<span >二等座<span >"<span >])
<span >for i <span >in<span > gaotIE:
table.add_row([i[0],i[7<span >]])
<span >print<span >(table)
<span >elif show==3<span >:
table=prettytable([<span >"<span >车次<span >",<span >"<span >无座<span >"<span >])
<span >for i <span >in<span > huoche:
table.add_row([i[0],i[8<span >]])
<span >print<span >(table)
<span >elif show==4<span >:
<span >print(<span >"<span >查询结束!<span >"<span >)
<span >break
<span >else<span >:
<span >print(<span >"<span >输入错误请重新输入!<span >")

日志记录查看:

总结

以上是内存溢出为你收集整理的python异常处理与断言以及日志模块全部内容,希望文章能够帮你解决python异常处理与断言以及日志模块所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1207942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存