电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺談Python中的異常和JSON讀寫數據的實現

瀏覽:2日期:2022-08-05 17:59:39

異常可以防止出現一些不友好的信息返回給用戶,有助于提升程序的可用性,在java中通過try ... catch ... finally來處理異常,在Python中通過try ... except ... else來處理異常

一、以ZeroDivisionError為例,處理分母為0的除法異常

def division(numerator,denominator): result=numerator/denominator return result ret1=division(1,5)print(ret1)ret2=division(1,0)print(ret2)

淺談Python中的異常和JSON讀寫數據的實現

1/5執行正常,輸出0.2,但1/0,分母為0,拋出Traceback,該信息看起來非常不友好,try .. except可以獲取這些異常信息,并且允許轉換為用戶可讀性較好的提示。

def division(numerator,denominator): try: result=numerator/denominator return result except ZeroDivisionError: return 'denominator can not be zero' except BaseException: return 'pls check if the numerator and denominator is number.' else: return 'unknow error' ret1=division(1,5)print(ret1)ret2=division(1,0)print(ret2)

淺談Python中的異常和JSON讀寫數據的實現

1/5正常計算,1/0提示“denominator can not be zero”,這個信息就比較友好,可讀性強。

一開始,我在這里犯了一個錯誤,在try塊中沒有返回result,程序輸出了如下結果

1/5的時候,try塊沒有發生異常,所以接下來的兩個except都不會進入,故就進入到了else處,返回了unknow error,所以我們在使用異常時,一定要記得返回

淺談Python中的異常和JSON讀寫數據的實現

如果在換一種方式,是否也可以正常返回結果

def division(numerator,denominator): try: result=numerator/denominator except ZeroDivisionError: result = 'denominator can not be zero' except BaseException: result = 'pls check if the numerator and denominator is number.' else: result = 'unknow error' return result ret1=division(1,5)print(ret1)ret2=division(1,0)print(ret2)

淺談Python中的異常和JSON讀寫數據的實現

結果也和預期不一致,所以在使用異常處理時,如果方法中有返回值,則一定要記得在try塊中也返回結果,如果try塊中執行正常,異常處理在try執行結束后結束,不再向下執行。

二、JSON 讀寫數據

JSON(JavaScript Object Notation),最開始只有JavaScript語言使用,但由于其優良的數據格式形式,逐漸被很多編程語言引用,如java中也是用到了JSON,并且有很多對應的類庫處理JSON數據。Python中對JSON數據的讀取和保存可以使用json.load()和json.dump()方法.

json.dump方法接收兩個參數,第一個參數為要保存的json數據,第二個數據為打開的文件對象,使用時注意順序。

json.load方法接收一個文件對象作為參數

另外json還存在很多其他的方法,比如json.dumps將python數據類型進行json格式編碼,可以簡單理解為將列表/字典轉換為json字符串,json.loads與json.dumps剛好相反,將json字符串轉換為列表/字典

如當用戶登錄后,讓其輸入名稱,然后根據json文件中是否存在該用戶給出不同的提示

1、JSON寫入

import jsonfilename='myjson.json'with open(filename,’w’) as wr: json.dump([1,2,3,4],wr)

2、JSON讀取

import jsonfilename='myjson.json'with open(filename) as re: ls=json.load(re)print(ls)

json讀取時,文件必須存在,且不能為空,且內容格式要符合json規范

文件內容為空以及不符合json格式規范,都會出現如下異常

淺談Python中的異常和JSON讀寫數據的實現

3、使用JSON讀取實現一個簡單的需求

用戶首次登陸,提示歡迎信息,并將其登錄信息記錄到以SON格式保存到文件中,當該用戶下次登錄后,將顯示歡迎回來,并且提示其上次登錄時間。輸入quit退出程序

import jsonimport osimport timeimport sysimport tracebackdef login(): json_file='./username.json' while(True): name=input('pls input your name: ') if 'quit' == name: sys.exit(0) curr_time=time.strftime(’%Y-%m-%d %H:%M:%S’,time.localtime(time.time())) user_dict_list=[] if os.path.exists(json_file): with open(json_file) as jf:try: # 文件內容為空,或者文件內容,或者不符合json格式,所以此處添加異常處理 user_dict_list=json.load(jf) isExist=False for ele in user_dict_list: username=ele.get('username') if username == name: isExist=True ele['lastLoginTime']=curr_time print ('welcome back: %s, last login : %s'%(name,curr_time)) break; if isExist == False: # 文件存在,且內容格式正確,但不存在當前用戶 first_login(user_dict_list,name,curr_time)except Exception: # 打印出異常信息,便于調測程序,正式使用事可以去掉,或者打印在后臺,不給用戶看到 traceback.print_exc() #文件內容為空,或者文件內容格式不符合JSON要求 first_login(user_dict_list,name,curr_time) else: # 文件不存在 first_login(user_dict_list,name,curr_time) # 將用戶信息寫入/重新寫入到文件中 with open(json_file,’w’) as jf: json.dump(user_dict_list,jf) ’’’ 將用戶第一次登陸信息存放到集合中 ’’’def first_login(user_dict_list,name,curr_time): my_dict={'username':name,'lastLoginTime':curr_time} user_dict_list.append(my_dict) print ('welcome: %s, have a nice day.'%(name)) login()

淺談Python中的異常和JSON讀寫數據的實現

輸入zhangsan和lisi,由于都是第一次登陸,所以打印出歡迎信息,再次數次zhangsan,由于其已經登錄過,故其名稱和上次登錄時間已經被記錄下來,再次登錄,打印出歡迎回來,及上次登錄時間,輸入quit退出程序。由于開發環境已經設置了UTF-8編碼,輸入中文也是支持的

以上這篇淺談Python中的異常和JSON讀寫數據的實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | SF6环境监测系统-接地环流在线监测装置-瑟恩实业 | 工业硝酸钠,硝酸钠厂家-淄博「文海工贸」 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 电动高压冲洗车_价格-江苏速利达机车有限公司 | 齿轮减速机_齿轮减速电机-VEMT蜗轮蜗杆减速机马达生产厂家瓦玛特传动瑞环机电 | 酒精检测棒,数显温湿度计,酒安酒精测试仪,酒精检测仪,呼气式酒精检测仪-郑州欧诺仪器有限公司 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 【黄页88网】-B2B电子商务平台,b2b平台免费发布信息网 | LCD3D打印机|教育|桌面|光固化|FDM3D打印机|3D打印设备-广州造维科技有限公司 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 河南道路标志牌_交通路标牌_交通标志牌厂家-郑州路畅交通 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 东莞海恒试验仪器设备有限公司| 合肥地磅_合肥数控切割机_安徽地磅厂家_合肥世佳电工设备有限公司 | 马尔表面粗糙度仪-MAHR-T500Hommel-Mitutoyo粗糙度仪-笃挚仪器 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 磁力轮,磁力联轴器,磁齿轮,钕铁硼磁铁-北京磁运达厂家 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 泰州物流公司_泰州货运公司_泰州物流专线-东鑫物流公司 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 设计圈 - 让设计更有价值!| 暖气片十大品牌厂家_铜铝复合暖气片厂家_暖气片什么牌子好_欣鑫达散热器 | 电力电子产业网 | 深圳希玛林顺潮眼科医院(官网)│深圳眼科医院│医保定点│香港希玛林顺潮眼科中心连锁品牌 | 垃圾压缩设备_垃圾处理设备_智能移动式垃圾压缩设备--山东明莱环保设备有限公司 | 食安观察网| 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 | 东莞市海宝机械有限公司-不锈钢分选机-硅胶橡胶-生活垃圾-涡电流-静电-金属-矿石分选机 | 课件导航网_ppt课件_课件模板_课件下载_最新课件资源分享发布平台 | 100_150_200_250_300_350_400公斤压力空气压缩机-舰艇航天配套厂家 | 旗帜网络笔记-免费领取《旗帜网络笔记》电子书 | 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | 东亚液氮罐-液氮生物容器-乐山市东亚机电工贸有限公司 | 中药二氧化硫测定仪,食品二氧化硫测定仪|俊腾百科| 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 |