- 一、时间模块
 - struct_time->时间戳
import time
s_time=time.localtime()
print(time.mktime(s_time)) - 时间戳->struct_time
tp_time=time.time()
print(time.localtime(tp_time)) - 补充:世界标准时间与本地时间
print(time.localtime())
print(time.gmtime()) # 世界标准时间,了解
print(time.localtime(333333333))
print(time.gmtime(333333333)) - struct_time->格式化的字符串形式的时间
s_time=time.localtime()
print(time.strftime(‘%Y-%m-%d %H:%M:%S’,s_time)) - 二、radom模块
 - import random
#
# res=’’
# for i in range(6):
# 从26大写字母中随机取出一个=chr(random.randint(65,90))
# 从10个数字中随机取出一个=str(random.randint(0,9))
#
# 随机字符=random.choice([从26大写字母中随机取出一个,从10个数字中随机取出一个])
# res+=随机字符 - 获取某一个文件夹下所有的子文件以及子文件夹的名字
res=os.listdir(‘.’)
print(res) - os.remove()  删除一个文件
# os.rename(“oldname”,”newname”) 重命名文件/目录 - 应用程序——》”ls /“
# os.system(“ls /“) - 规定:key与value必须都为字符串
PATH #执行系统命令用到
sys.path #导模块用到
# os.environ[‘a aaaaaaaaa’]=’111’ #软件环境都用得到
# print(os.environ) - print(os.path.dirname(r’/a/b/c/d.txt’))
# print(os.path.basename(r’/a/b/c/d.txt’)) - print(os.path.isfile(r’笔记.txt’))
# print(os.path.isfile(r’aaa’))
# print(os.path.isdir(r’aaa’)) - print(os.path.join(‘a’,’/‘,’b’,’c’,’d’))
 - 推荐用这种
BASEDIR=os.path.dirname(os.path.dirname(_file))
print(BASE_DIR) - BASEDIR=os.path.normpath(os.path.join(
# _file,
# ‘..’,
# ‘..’
# ))
# print(BASE_DIR) - 在python3.5之后,推出了一个新的模块pathlib
from pathlib import Path - res = Path(file).parent.parent
# print(res) - res=Path(‘/a/b/c’) / ‘d/e.txt’
# print(res) - with open(‘test.json’,mode=’rb’) as f:
# l=json.load(f) - res=json.dumps({‘name’:’哈哈哈’})
# print(res,type(res)) - res=json.loads(‘{“name”: “\u54c8\u54c8\u54c8”}’)
# print(res,type(res)) - import ujson as json # 不行
 - 后续代码中的应用
# json.dumps()
# json.dumps()
# json.dumps()
# json.dumps()
# json.dumps()
# json.dumps()
# json.dumps()
# json.dumps()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads() - 七、configparser模块
 - 1、获取sections
# print(config.sections()) - 2、获取某一section下的所有options
# print(config.options(‘section1’)) - 3、获取items
# print(config.items(‘section1’)) - 4、
# res=config.get(‘section1’,’user’)
# print(res,type(res)) - res=config.getint(‘section1’,’age’)
# print(res,type(res)) - res=config.getboolean(‘section1’,’is_admin’)
# print(res,type(res)) - res=config.getfloat(‘section1’,’salary’)
# print(res,type(res)) 
一、时间模块
1、time
import time
1.1 时间戳:
从1970年到现在经过的秒数
   作用:用于时间间隔的计算
print(time.time())
1.2 按照某种格式显示的时间:
2020-03-30 11:11:11
   作用:用于展示时间
print(time.strftime(‘%Y-%m-%d %H:%M:%S %p’))
print(time.strftime(‘%Y-%m-%d %X’))
1.3 结构化的时间
作用:用于单独获取时间的某一部分
res=time.localtime()
print(res)
print(res.tm_year)
print(res.tm_yday)
2、datetime
import datetime
print(datetime.datetime.now())
print(datetime.datetime.now() + datetime.timedelta(days=3))
print(datetime.datetime.now() + datetime.timedelta(weeks=1))
3、时间模块需要掌握的操作
3.1 时间格式的转换
struct_time->时间戳
import time
s_time=time.localtime()
print(time.mktime(s_time))
时间戳->struct_time
tp_time=time.time()
print(time.localtime(tp_time))
补充:世界标准时间与本地时间
print(time.localtime())
print(time.gmtime()) # 世界标准时间,了解
print(time.localtime(333333333))
print(time.gmtime(333333333))
struct_time->格式化的字符串形式的时间
s_time=time.localtime()
print(time.strftime(‘%Y-%m-%d %H:%M:%S’,s_time))
print(time.strptime(‘1988-03-03 11:11:11’,’%Y-%m-%d %H:%M:%S’))
!!!真正需要掌握的只有一条:format string<———>timestamp
# '1988-03-03 11:11:11'+7import time# format string--->struct_time--->timestampstruct_time=time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S')timestamp=time.mktime(struct_time)+7*86400print(timestamp)format string<---struct_time<---timestampres=time.strftime('%Y-%m-%d %X',time.localtime(timestamp))print(res)
time.sleep(3)
3.2 了解知识
import timeprint(time.asctime()) # 多用于linux系统import datetimeprint(datetime.datetime.now())print(datetime.datetime.utcnow())print(datetime.datetime.fromtimestamp(333333))
二、radom模块
import randomprint(random.random()) #(0,1)----float 大于0且小于1之间的小数print(random.randint(1, 3)) # [1,3] 大于等于1且小于等于3之间的整数print(random.randrange(1, 3)) # [1,3) 大于等于1且小于3之间的整数print(random.choice([111, 'aaa', [4, 5]])) # 1或者23或者[4,5]print(random.sample([111, 'aaa', 'ccc','ddd'],2)) # 列表元素任意2个组合print(random.uniform(1, 3)) # 大于1小于3的小数,如1.927109612082716item = [1, 3, 5, 7, 9]random.shuffle(item) # 打乱item的顺序,相当于"洗牌"print(item)
应用:随机验证码
import random
#
# res=’’
# for i in range(6):
#     从26大写字母中随机取出一个=chr(random.randint(65,90))
#     从10个数字中随机取出一个=str(random.randint(0,9))
#
#     随机字符=random.choice([从26大写字母中随机取出一个,从10个数字中随机取出一个])
#     res+=随机字符
import randomdef make_code(size=4):res=''for i in range(size):s1=chr(random.randint(65,90))s2=str(random.randint(0,9))res+=random.choice([s1,s2])return resprint(make_code(6))
三、os模块

import os
获取某一个文件夹下所有的子文件以及子文件夹的名字
res=os.listdir(‘.’)
print(res)
size=os.path.getsize(r’/Users/linhaifeng/PycharmProjects/s14/day22/01 时间模块.py’)
print(size)
os.remove()  删除一个文件
# os.rename(“oldname”,”newname”)  重命名文件/目录
应用程序——》”ls /“
# os.system(“ls /“)
规定:key与value必须都为字符串
PATH  #执行系统命令用到
sys.path #导模块用到
# os.environ[‘a aaaaaaaaa’]=’111’ #软件环境都用得到
# print(os.environ)
print(os.path.dirname(r’/a/b/c/d.txt’))
# print(os.path.basename(r’/a/b/c/d.txt’))
print(os.path.isfile(r’笔记.txt’))
# print(os.path.isfile(r’aaa’))
# print(os.path.isdir(r’aaa’))
print(os.path.join(‘a’,’/‘,’b’,’c’,’d’))
推荐用这种
BASEDIR=os.path.dirname(os.path.dirname(_file))
print(BASE_DIR)
BASEDIR=os.path.normpath(os.path.join(
#     _file,
#     ‘..’,
#     ‘..’
# ))
# print(BASE_DIR)
在python3.5之后,推出了一个新的模块pathlib
from pathlib import Path
res = Path(file).parent.parent
# print(res)
res=Path(‘/a/b/c’) / ‘d/e.txt’
# print(res)
四、sys模块
sys.argv 外部传参
import sys# python3.8 run.py 1 2 3# sys.argv获取的是解释器后参数值print(sys.argv)
写复制命令
import syspython3.8 run.py 1 2 3sys.argv获取的是解释器后参数值print(sys.argv)src_file=input('源文件路径: ').strip()dst_file=input('目标文件路径: ').strip()src_file=sys.argv[1]dst_file=sys.argv[2]# 判断with open(r'%s' %src_file,mode='rb') as read_f,\open(r'%s' %dst_file,mode='wb') as write_f:for line in read_f:write_f.write(line)python3.8 run.py src_file dst_file
打印进度条
import timedef progress(percent):if percent > 1:percent = 1res = int(50 * percent) * '#'print('\r[%-50s] %d%%' % (res, int(100 * percent)), end='')recv_size=0total_size=1025011while recv_size < total_size:time.sleep(0.01) # 下载了1024个字节的数据recv_size+=1024 # recv_size=2048# 打印进度条# print(recv_size)percent = recv_size / total_size # 1024 / 333333progress(percent)
五、shutil模块
六、json与pickle模块
1、什么是序列化&反序列化
内存中的数据类型——>序列化——>特定的格式(json格式或者pickle格式)
内存中的数据类型<——反序列化<——特定的格式(json格式或者pickle格式)
土办法:
 {‘aaa’:111}—->序列化str({‘aaa’:111})——->”{‘aaa’:111}”
 {‘aaa’:111}<—-反序列化eval(“{‘aaa’:111}”)<——-“{‘aaa’:111}”
2、为何要序列化
序列化得到结果=>特定的格式的内容有两种用途
- 可用于存储=》用于存档
 传输给其他平台使用=》跨平台数据交互
python java<br /> 列表 特定的格式 数组
强调:
针对用途1的特定一格式:可是一种专用的格式=》pickle只有python可以识别
针对用途2的特定一格式:应该是一种通用、能够被所有语言识别的格式=》json
3、如何序列化与反序列化
示范1
import json# 序列化json_res=json.dumps([1,'aaa',True,False])print(json_res,type(json_res)) # "[1, "aaa", true, false]"# 反序列化l=json.loads(json_res)print(l,type(l))
示范2:
import json
序列化的结果写入文件的复杂方法
json_res=json.dumps([1,'aaa',True,False])# # print(json_res,type(json_res)) # "[1, "aaa", true, false]"with open('test.json',mode='wt',encoding='utf-8') as f:f.write(json_res)
将序列化的结果写入文件的简单方法
with open('test.json',mode='wt',encoding='utf-8') as f:json.dump([1,'aaa',True,False],f)
从文件读取json格式的字符串进行反序列化操作的复杂方法
with open('test.json',mode='rt',encoding='utf-8') as f:json_res=f.read()l=json.loads(json_res)print(l,type(l))
从文件读取json格式的字符串进行反序列化操作的简单方法
with open('test.json',mode='rt',encoding='utf-8') as f:l=json.load(f)print(l,type(l))
json验证:
json格式兼容的是所有语言通用的数据类型,不能识别某一语言的所独有的类型
json.dumps({1,2,3,4,5})
json强调:一定要搞清楚json格式,不要与python混淆
l=json.loads(‘[1, “aaa”, true, false]’)
l=json.loads(“[1,1.3,true,’aaa’, true, false]”)
print(l[0])
了解
# l = json.loads(b ‘[1, “aaa”, true, false]’)
# print(l, type(l))
with open(‘test.json’,mode=’rb’) as f:
#     l=json.load(f)
res=json.dumps({‘name’:’哈哈哈’})
# print(res,type(res))
res=json.loads(‘{“name”: “\u54c8\u54c8\u54c8”}’)
# print(res,type(res))
4、猴子补丁
在入口处打猴子补丁
import jsonimport ujsondef monkey_patch_json():json.__name__ = 'ujson'json.dumps = ujson.dumpsjson.loads = ujson.loadsmonkey_patch_json() # 在入口文件出运行
import ujson as json # 不行
后续代码中的应用
# json.dumps()
# json.dumps()
# json.dumps()
# json.dumps()
# json.dumps()
# json.dumps()
# json.dumps()
# json.dumps()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
# json.loads()
5、pickle模块
import pickleres=pickle.dumps({1,2,3,4,5})print(res,type(res))s=pickle.loads(res)print(s,type(s))
七、configparser模块
获取配置文件的信息 
import configparser
config=configparser.ConfigParser()
config.read(‘test.ini’)
