"""
json针对文件
1、序列化:把目标数据通过dumps()方法写到具体文件中
2、反序列化:调用load()方法读取数据
"""
import json
# 针对文件的序列化
dict1={"name":"admin","age":"20"}
json.dump(dict1,open('log.txt','w'))
# dumps()是把python对象转换成json对象的一个过程,生成的是字符串。
# dump()是把python对象转换成json对象生成一个fp的文件流,和文件相关。
# 针对文件的反序列化
data=json.load(open('log.txt','r'))
print(data)
print(type(data))
# 序列化和反序列化
import requests
r=requests.get(url='http://httpbin.org/get')
json.dump(r.json(),open('http.txt','w'))
datas=json.load(open('http.txt'))
print(datas)
print(datas['url'])
![]()
import time
# 休眠,秒为单位
time.sleep(5)
print('获取时间戳',time.time())
print('返回当前字符串的日期格式',time.ctime())
print('时间戳处理成字符串格式',time.ctime(time.time()))
print('本地时间方式',time.localtime(time.time()))
print('对时间进行格式化处理',time.strftime('%y-%m-%d %x',time.localtime()))
print('对时间进行格式化处理',time.strftime('%y-%m-%d %H:%S:%M',time.localtime()))
![]()
import datetime
import time
print('获取当前时间',datetime.datetime.now())
# 场景:遇到时间戳,怎么把时间戳转为标准时间格式
print('把时间戳格式进行处理',datetime.datetime.fromtimestamp(time.time()))
print('当前时间加5天',datetime.datetime.now()+datetime.timedelta(days=5))
![]()
'''
对称加密:发送方接收方都有密钥
不对称加密:单方面加密
对请求参数进行ASCI编码排序
把排序的请求参数处理成栈key=value&key=value
根据第二部分生成结果进行MD5加密
'''
import hashlib
from urllib import parse
import time
def sign():
dict1={"name":"admin","age":"20","nowTime":time.time()}
data=sorted(dict1.items(),key=lambda item:item[0])
data=parse.urlencode(data)
# urlencode()key-value键值对转换成所需格式,返回如a=1&b=2字符串
m=hashlib.md5()
m.update(data.encode('utf-8'))
print(m.hexdigest())
sign()
![]()
import sys
import os
base_dir=os.path.dirname(os.path.dirname(__file__))
filePath=os.path.join(base_dir,'admin','a')
sys.path.append(filePath)
# 获取Python的路径
for item in sys.path:
print(item)
# from admin.a.info import *
from info import *
showInfo()
![]()
import json
USER_LOGIN={'isLogin':False}
def outer(func):
def inner(*args,**kwargs):
if USER_LOGIN['isLogin']:
return func()
else:
print('请登录')
return inner
def out():
username=input('请用户用户名:\n')
password=input('请输入密码:\n')
return username,password
def register():
'''注册'''
username,password=out()
temp=username+'|'+password
# 使用序列化的方式把内容写到文件里面,一个对象的状态(各个属性量)保存起来
json.dump(temp,open('login.txt','w'))
def login():
'''登录'''
username,password=out()
#反序列化读取文件内容以及把文件按照|进行分割
lists=str(json.load(open('login.txt'))).split('|')
if username==lists[0] and password==lists[1]:
USER_LOGIN['isLogin']=True
USER_LOGIN['nick']='无涯'
print(USER_LOGIN)
else:
print('请输入正确的账户和密码')
@outer
def profile():
'''个人主页'''
print('欢迎{0}访问个人主页的信息!'.format(USER_LOGIN['nick']))
@outer
def admin():
'''后台系统'''
print('欢迎访问后台管理系统的信息')
def main():
'''执行的主函数'''
while True:
try:
f=int(input('1、注册 2、登录 3、个人主页 4、后台系统 5、退出\n'))
if f==1:
register()
elif f==2:
login()
elif f==3:
profile()
elif f==4:
admin()
elif f==5:
break
except :continue
if __name__ == '__main__':
main()
![]()
# 1、结合函数的返回值写一个具体的案例
def login(username,password):
if username=="admin" and password=="123456":
return "panduan"
def profile(token):
if token=="panduan":
print("显示个人主页")
else:
print("请登录")
profile(token=login(username="admin",password="123456"))
# 2、函数可以有多个返回值吗?请结合案例编写一个函数返回多个返回值
# 返回一个列表
def fun():
str = "hello"
x = 20
return [str, x]
list = fun()
print(list)
# 3、字典的排序使用到哪个关键字,结合案例来说明
dict1={'a':2,'c':3}
# sorted()对所有对象排序操作
print("对字典根据key进行排序:",dict(sorted(dict1.items(),key=lambda key:key[0])))
# 4、list1=["Go",{"name":"wuya","data":[{"age":18,"language":["Go",{"address":"xian","info":[{"sex":"男"},{"show":[{"work":"测试工程师"}]}]}]}]}]针对如上的信息,获取name,age,work,sex的值,结合字符串的格式化来进行输出
list1=["Go",{"name":"wuya","data":[{"age":18,"language":["Go",{"address":"xian","info":[{"sex":"男"},{"show":[{"work":"测试工程师"}]}]}]}]}]
# 获取name,age,work,sex的值,字符串格式化
print('name:',list1[1]['name'])
print('age:',list1[1]['data'][0]['age'])
print('work:',list1[1]['data'][0]['language'][1]['info'][1]['show'][0]['work'])
print('sex:',list1[1]['data'][0]['language'][1]['info'][0]['sex'])
# 5、使用文字描述序列化和反序列化的概念
# 序列化:将内存中的对象按照某种既定的规则变成一个个二进制
# 反序列化:二进制还原成对象。
![]()