1. Time
2. os
3. sys
4. JSON字典的序列化与反序列化
5. 文件的序列化与反序列化
6. md5加密

------------------------------------------------------------ Time

# import time as t
#
# # print(dir(t)) # 有什么方法
#
# # 获取时间戳
# print(int(t.time()))
#
# # 获取当前时间
# print(t.localtime(t.time()))
# print(t.strftime('%y-%m-%d %H:%M:%S',t.localtime()))
#
# t.sleep(1)

------------------------------------------------------------ os

import os #最常用是目录的处理
# print(os.system('ipconfig')) # 乱码改为GBK


# 当前文件的目录
#print(dir(os))


# 创建目录mkdir
# os.mkdir('I:/log')
# 删除目录
# os.rmdir('I:/log')


# 系统帮助命令 cmd:net helpmsg 183


# 给目录改名
# os.rename('I:/log','I:/nowlog')


# 对目录的处理
# print (u'当前文件目录:',os.path.dirname(__file__))
# print (u'文件当前目录的上一级目录:',os.path.dirname(os.path.dirname(__file__)))
#print (u'文件当前目录的上一级目录:',os.path.dirname(os.path.dirname(os.path.dirname(__file__))))


# 目录路径拼接
base_dir=os.path.dirname(os.path.dirname(__file__))
#print(os.path.join(base_dir,'demo2/test1'))


# 读取文件
f=open(os.path.join(base_dir,'demo2/login'),'r') # 以读模式
print(f.read())


'''
请求参数是不确定的,可能有一个,可能有N个
'''


def f(*args,**kwargs):
    return kwargs


print(f(name='wuya',age='18'))
print(f(name='wuya',age='18',address='xian'))

---------------------------------------------------------------------- sys

import  sys
import os
# 把目录路径添加到sys.path,这样就可以找到另外目录下的所有模块了----------非常好用
#sys.path.append(r'C:\Users\Administrator\PycharmProjects\pythonProject3\demo')
demo_path = os.path.join(os.path.dirname(os.path.dirname(__file__)),'demo')
sys.path.append(demo_path)


#from demo.timeTest import *
# from timeTest import *
# index()


# 输出查找模块的范围路径
# for item in sys.path:
#     print(item)

----------------------------------------------------------- JSON字典的序列化与反序列化

一、概念理解
1、json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串)
  (1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)
  (2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)
2、json.dump()和json.load()主要用来读写json文件函数
字典的序列化与反序列化


import json
'''
序列化:把python的数据类型转为str的类型过程
反序列化:str的类型转为python的数据结构
'''


dict1={'name':'wuya','age':18}

'''字典的序列化与反序列化'''
# 序列化:dict--->str
dict_str=json.dumps(dict1)
print(u'序列化后的结果信息:',dict_str,type(dict_str))


# 反序列化
str_dict=json.loads(dict_str)
print(u'反序列化后的结果信息:',str_dict,type(str_dict))


列表的序列化与反序列化的过程


'''列表的序列化与反序列化的过程'''
import json


list1=['admin','wuya','weike']


# 序列化
list_str=json.dumps(list1)
print(u'序列化后的结果信息')
print(list_str,type(list_str))
# 反序列化
str_list = json.loads(list_str)
print(u'反序列化后的结果信息')
print(str_list,type(str_list))

元组的序列化与反序列化的过程

import json
'''元组的序列化与反序列化的过程'''
tuple1=(1,2,3)
# 序列化
tuple_str = json.dumps(tuple1)
print(u'序列化后的结果信息:')
print(tuple_str,type(tuple_str))


str_tuple = json.loads(tuple_str)
# 反序列化
print(u'反序列化后的结果信息:')
print(str_tuple,type(str_tuple))

-------------------------------------------------------------- 文件的序列化与反序列化

json.dump()用于将dict类型的数据转成str,并写入到json文件中。
json.load()用于从json文件中读取数据,类型为str。

import json
import requests


'''文件的序列化与反序列化'''
url = 'https://way.jd.com/jisuapi/weather'
params = {
    'city' : '安顺',
    'cityid' : '111',
    'citycode' : '101260301',
    'appkey' : '8c60eac7cface16fc71d865bbef56172'
}


r = requests.get(url,params)
'''
1.文件反序化后,类型是unicode
2.进行编码,把unicode类型转为str类型
3.然后使用反序列化,把str转为字典类型
'''
# json.dump()用于将dict类型的数据转成str,并写入到json文件中。
json.dump(r.content.decode('utf-8'),open('weather.json','w'))
#print(dict1,type(dict1))

# json.load()用于从json文件中读取数据,类型为str。
str_dict = json.loads(json.load(open('weather.json','r')))
print(str_dict,type(str_dict))

------------------------------------------------------------------- md5加密

'''
对请求参数做ascil码的排序
做url encode 编码:name=wuya&age=18&city=xian&work=tester
做md5-->sign-->f6ab5ff84e2b2cb4202e1c0dde4f139c
'''


# dict1=dict(sorted(dict1.items(),key=lambda item:item[0]))


from urllib import  parse
import hashlib
# datas=parse.urlencode(dict1)
#
# md5=hashlib.md5()
# md5.update(datas.encode('utf-8'))
# print(md5.hexdigest())


def getMd5(**kwargs):
    dict1 = dict(sorted(kwargs.items(), key=lambda item: item[0]))
    datas = parse.urlencode(dict1)
    md5 = hashlib.md5()
    md5.update(datas.encode('utf-8'))
    return md5.hexdigest()


print(getMd5(name='wuya',gji='china'))