调用__write_user函数,写入json文件中的"create_time","update_time"为什么不是格式化的字符串

调用__write_user函数,写入json文件中的"create_time","update_time"为什么不是格式化的字符串

if __name__ == '__main__':
# 获取gift.jsonuser.json的路径
   gift_path = os.path.join(os.getcwd(), 'storage', 'gift.json')
user_path = os.path.join(os.getcwd(), 'storage', 'user.json')
# print(gift_path, user_path)
   # 实例化
   base = Base(user_json=user_path, gift_json=gift_path)
base._Base__write_user(username='dewei', role='admin') # 调用私有函数,写入一个user信息
   print(base._Base__read_users()) # 调用私有函数,读出一个user信息
'''读出JSON文件,如果time_to_string=True则将时间戳转换成格式化字符串'''
def __read_users(self, time_to_string=True):
with open(self.user_json, 'r')as f:
# 反序列化,返回原始数据类型
       data = json.loads(f.read())
if time_to_string is True:
for username, value in data.items():
value['create_time'] = timestamp_to_string(value['create_time'])
value['update_time'] = timestamp_to_string(value['update_time'])
data[username] = value
return data # 字典

# 写入user的相关信息
def __write_user(self, **user):
# **user:将有参数与默认值的赋值语句合并成字典
   if 'username' not in user:
raise ValueError('Missing username')
if 'role' not in user:
raise ValueError('Missing role')
# 默认activeTrue
   user['active'] = True
   # 初始的创建时间和更新时间相同
   user['create_time'] = time.time()
user['update_time'] = time.time()
# 默认gifts为空列表
   user['gifts'] = []

""""
   users来自user.json文件
   {username:{username:xxx,role:xxx,active:xxx,...}}
   usernamekey来检索用户信息
   
   user来自参数**user
   {username:xxx, role:xxx, active:xxx,...}
   """
   users = self.__read_users(time_to_string=True) # 返回字典

   '''如果将要添加的username已存在user.json文件中'''
   if user['username'] in users:
raise UserExistsError('username %s had exists' % user['username'])
# 写入
   users.update(
{user['username']: user}
)
# 序列化并写入
   json_users = json.dumps(users)
with open(self.user_json, 'w')as f:
f.write(json_users)


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕美 2021-03-07 13:31:51

同学,你好!是字符串类型的数据,同学可以打印下数据类型。

http://img1.sycdn.imooc.com//climg/604450220965152d11080214.jpg

祝:学习愉快!

  • 提问者 慕神3107089 #1
    但是不是通过strftime格式化后的字符串啊
    2021-03-07 13:40:33
  • 好帮手慕美 回复 提问者 慕神3107089 #2

    同学,你好!在__write_user函数中,create_time和update_time并没有调用timestamp_to_string()进行格式化,因此不是格式化后的字符串。

    在其他位置调用timestamp_to_string()时传入的是时间戳类型,因此写入用户时写入的是时间戳类型。

    http://img1.sycdn.imooc.com//climg/60446b5c0929d6aa04810064.jpg

    祝学习愉快!

    2021-03-07 13:57:52
慕神3107089 提问者 2021-03-07 11:19:50

user.json

{"dewei": {"username": "dewei", "role": "admin", "active": true, "create_time": 1615086918.250943, "update_time": 1615086918.250943, "gifts": []}}


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师