日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python读取json数据格式问题_浅谈Python中的异常和JSON读写数据的实现

發布時間:2023/12/2 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python读取json数据格式问题_浅谈Python中的异常和JSON读写数据的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

異常可以防止出現一些不友好的信息返回給用戶,有助于提升程序的可用性,在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)

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)

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

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

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

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

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)

結果也和預期不一致,所以在使用異常處理時,如果方法中有返回值,則一定要記得在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 json

filename="myjson.json"

with open(filename,'w') as wr:

json.dump([1,2,3,4],wr)

2、JSON讀取

import json

filename="myjson.json"

with open(filename) as re:

ls=json.load(re)

print(ls)

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

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

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

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

import json

import os

import time

import sys

import traceback

def 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()

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

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

總結

以上是生活随笔為你收集整理的python读取json数据格式问题_浅谈Python中的异常和JSON读写数据的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。