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()

 

posted @ 2021-07-19 09:53  蒋佳伟  阅读(64)  评论(0)    收藏  举报