# -*- coding: utf-8 -*-
import json
import datetime
import time
# 写入初始数据
# d = '[{"时间": "2023/12/28 17:21:50", "项目": "收到王敏货款", "金额": 20000, "分类": "收入"}]'
# with open(r"data.txt", "w", encoding="utf-8") as f:
# f.write(d)
# 初始数据一定要通过程序写入
# 一个文本文件中只能保存一种业务对象
# 读json数据
def readData():
with open(r"data.txt", "r", encoding="utf-8") as f:
jsonData = f.read()
dataList = json.loads(jsonData)
return dataList
# 写json数据
def writeData(dataList):
jsonData = json.dumps(dataList, ensure_ascii=False)
with open(r"data.txt", "w") as f:
f.write(jsonData)
print("-------写入数据成功")
# 显示账目
def showData():
sumIn = 0 # 总收入
sumOut = 0 # 总支出
dataList = readData()
print("*******************账单********************")
for data in dataList:
print(data["时间"], " ", data["项目"], " ", data["金额"])
if data["分类"] == "支出":
sumOut += data["金额"]
else:
sumIn += data["金额"]
print("******************************************")
print("**总收入:", sumIn,"元,总开始:",sumOut,"元,结余:",sumIn-sumOut,"元!")
# 增加一笔账目
def addData():
dataList = readData()
content = input("请输入账单明细:")
amount = float(input("请输入账单金额:"))
c = int(input("请选择(1.收入 2.支出):"))
cla = "支出"
if c == 1:
cla == "收入"
t = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S")
newData = {"时间": t, "项目": content, "金额": amount, "分类": cla}
dataList.append(newData)
writeData(dataList)
if __name__ == "__main__":
showData()
addData()
showData()
运行报错
(result,consumed) = self._buffer_decode(data, self.errors, final)UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbc in position 5: invalid start byte
直接在writeData加一个encoding="utf-8"就可以解决拉
# 写json数据
def writeData(dataList):
jsonData = json.dumps(dataList, ensure_ascii=False)
with open(r"data.txt", "w", encoding="utf-8") as f:
f.write(jsonData)
print("-------写入数据成功")