Python学习第二周(1)
一、序列化与反序列化实战
json针对文件的序列化和反序列化
1.序列化:把目标的数据通过json的dump()方法写到具体的文件里面
2.反序列化:调用json的load()方法,从目标文件里面读取数据
序列化
dict1={"name":"W","age":20,"address":"xian"}
json.dump(dict1,open('JJW.txt','w'))

在JJW.txt中打开所输入的数据
反序列化
data=json.load(open('JJW.txt'))
print(data)
print(type(data))

从JJW.txt中调取数据
json实战
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'])


二、hashlib实战
对称加密:发送方与接收方双方加密
不对称加密:单方面的加密
opeM API——>开放平台
1.对请求者进行ascl码表进行排序
2.把排序后的请求参数处理成key=value
3.根据第二部分生成的结果进行md5的加密
import hashlib from urllib import parse def sign(): dict1={'name':'wuya','age':18,'address':'xian','first':False,'pn':2,'kd':'测试开发工程师'} data=sorted(dict1.items(),key=lambda item:item[0]) data=parse.urlencode(data) m=hashlib.md5() m.update(data.encode('utf-8')) print(m.hexdigest()) sign()

三、time实战
import time
#休眠,秒为单位
time.sleep(1)
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()))

四、datastimes实战
import datetime import time print('获取当前的时间',datetime.datetime.now()) #场景:遇到时间戳,怎么把时间戳转换为标准时间格式 print('把时间戳格式进行处理',datetime.datetime.fromtimestamp(time.time())) print('当前时间加上5天:',datetime.datetime.now()+datetime.timedelta(days=5))

五、sys实战
获取Python路径
1、第一种查找方式
from admin.aasa.info import *
2、第二种查找方式
import sys import os base_dir=os.path.dirname(os.path.dirname(__file__)) filePath=os.path.join(base_dir,'admin','aasa') sys.path.append(filePath) #获取Python的路径 for item in sys.path: print(item) from info import *
showInfo()

六、登录页面
#!/usr/bin/env python # !coding:utf-8 USER_LOGIN={'isLogin':False} def register(): "注册" username=input('请输入用户名:\n') password=input('请输入密码:\n') temp=username+'|'+password with open('login.txt','w')as f: f.write(temp) def login(): '''登录''' username=input('请用户用户名:\n') password=input('请输入密码:\n') lists=None with open('login.txt') as f: lists=f.read() lists=lists.split('|') if username==lists[0] and password==lists[1]: USER_LOGIN['isLogin']=True USER_LOGIN['nick']='无涯' print(USER_LOGIN) else: print('请输入正确的账户和密码') def profile(): '''个人主页''' if USER_LOGIN['isLogin']: print('欢迎{0}访问个人主页的信息!'.format(USER_LOGIN['nick'])) else: print('请登录') def admin(): '''后台系统''' if USER_LOGIN['isLogin']: print('欢迎访问后台管理系统的信息') else: 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()
登录界面的优化
#!/usr/bin/env python # !coding:utf-8 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()

浙公网安备 33010602011771号