具體的代碼是這樣的,原本沒有檔案,運行,然后產生新檔案,第一次輸入姓名:jimmy,之后第二次輸入姓名,比如說是 tom,然后系統提示 姓名不存在是否新增,選擇 Y,然后新增tom的姓名,到這里都還正常,然后第三次輸入姓名就發現有問題了,系統報錯 顯示json.decoder.JSONDecodeError,然后我就在 exist_name中又加入了 except json.decoder.JSONDecodeError: ,但這樣的話還是有問題,一直到輸完第二個新增姓名后還是OK的,輸入第三個姓名,比如說是 kitty,但這次系統并沒有提示說 ,姓名不存在是否新增,而是新增了 kitty這個姓名,然后輸入第五個新增姓名時又有提示了,到第六個又沒有了,總之就是兩個兩個的回圈,所有想向各位大俠咨詢下,到底這段代碼的問題出在哪里,非常感謝
import json
def exist_name():
name_path = "D:/專用測驗檔案/remember_me.json"
try:
with open(name_path) as path_file:
name_list = json.load(path_file)
except FileNotFoundError:
return None
except json.decoder.JSONDecodeError:
return None
else:
return name_list
def first_add_name():
name_list = input("請輸入姓名:")
name_path = "D:/專用測驗檔案/remember_me.json"
with open(name_path, "a") as path_file:
json.dump(name_list, path_file)
return name_list
def new_add_name():
name_list = input("請再輸入一遍姓名:")
name_path = "D:/專用測驗檔案/remember_me.json"
with open(name_path, "a") as path_file:
json.dump(name_list, path_file)
return name_list
def name_check():
name_list = exist_name() # 這里要用 name_list
if name_list:
confirm = input("請輸入姓名:")
if confirm in name_list:
print("歡迎回來," + str(confirm))
else:
check = input("該姓名不存在于資料庫中,是否添加?(y/n)")
if check == "y":
name_list = new_add_name()
print("你好," + str(name_list) + " 已儲存!")
else:
name_list = exist_name()
print("不添加" + str(name_list))
else:
name_list = first_add_name()
print("你好," + str(name_list) + " 已儲存!")
name_check()
uj5u.com熱心網友回復:
建議使用覆寫寫的方式,不要追加寫。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/224590.html
