模块应用 time、datetime、random、os、sys、json、pickle
一、time模块
- 用于不同时间格式的转换
import time
1:时间戳
print(time.time())
# 1560129555.4663873(python中从1970年开始计算过去了多少秒)
2:格式化时间(需要自己给定格式
print(time.strftime('%Y|%m|%d %H:%M:%S'))
#2019|06|10 14:53:16
3:结构化时间
1.print(time.localtime()) # 以北京时间为准
#time.struct_time(tm_year=2019, tm_mon=6, tm_mday=10, tm_hour=14, tm_min=53, tm_sec=16, tm_wday=0, tm_yday=161, tm_isdst=0)
2.print(time.gmtime(0)) # 打印1970年的时间
#time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
3.print(time.gmtime()) # 以格林威治时间为准,时间差为8h
#time.struct_time(tm_year=2019, tm_mon=6, tm_mday=10, tm_hour=6, tm_min=53, tm_sec=16, tm_wday=0, tm_yday=161, tm_isdst=0)
4:结构化时间转格式化时间
struct_time = time.localtime()
print(time.strftime('%Y-%m-%d',struct_time))
#2019-06-10
5:结构化时间转时间戳
print(time.mktime(struct_time))
#1560149596.0
6:格式化时间转结构化时间
format_time = time.strftime('%Y-%m-%d %X')
print(time.strptime('2019-06-01 12:00:00','%Y-%m-%d %X'))
#time.struct_time(tm_year=2019, tm_mon=6, tm_mday=1, tm_hour=12, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=152, tm_isdst=-1)
7:时间戳转换为结构化时间
stamp_time = time.time()
print(time.localtime(stamp_time))
#time.struct_time(tm_year=2019, tm_mon=6, tm_mday=10, tm_hour=14, tm_min=53, tm_sec=16, tm_wday=0, tm_yday=161, tm_isdst=0)
8睡眠
time.sleep(3)
#睡了三秒钟
二、datetime模块
其作用在于时间的加减
import datatime
1获取当前时间
now=datetime.datetime.now()
print(type(now))
#<class 'datetime.datetime'>
now=str(now)
print(now)
#2019-06-10 15:07:47.342725
print(now.split()[0])
#2019-06-10
print(now.split()[1])
#15:07:47.342725
print(now+datetime.timedelta(days=5)) #默认为天
print(now+datetime.timedelta(5))
print(now-datetime.timedelta(-5))
#不可以加年月
print(now+datetime.timedelta(hours=5)) #加小时
print(now+datetime.timedelta(minutes=34)) #加分钟
print(now+datetime.timedelta(seconds=132)) #加秒
更改年月日时分秒
print(now.replace(year=2012,month=12,day=22,hour=5,minute=13,second=14))
2012-12-22 05:13:14.318159
三、random模块
import random
1:随机打印(0,1) 不会取0,1
print(random.random())
#0.6379598370829762
2:打印[n,m]的整数 取得n,m
print(random.randint(1,3))
#2
3:打印(n,m)之间的小数
print(random.uniform(1,3))
#1.0559676775461968
4:打印【n,m)的整数
print(random.randrange(1,3))
#2
5:牢记(从容器中随机选择一个)
count=0
while True:
res=random.choice([10000,2,3,1,6])
count+=5000
if count==15000:
print(f'恭喜获得一万元大奖)
count=0
break
else:
if res==10000:
print('再来一次')
else:
print(f'恭喜你获得了{res}')
6:牢记(从文件中随机选择多个)
print(random.sample([1,'a',2,'b']))
#[2, 'a']
7:牢记打乱容器
lis=[1,2,3,4,5]
random.shuffle(lis)
print(lis)
#[5,4, 3, 2, 1]
四、os模块
其作用是和操作系统交互,文件操作
import os
python
1:创建文件夹
# os.mkdir('bbb')
2:删除空文件夹,递归往上删除空的文件夹
# os.removedirs(r'文件path')
3:删除一个空的文件夹
# os.rmdir(r'文件path')
4:列出文件夹内所有的文件名和隐藏文件名
# print(os.listdir(r'文件path'))
5:删除文件
# os.remove(r'文件path')
6:重命名文件名
# os.rename(r'文件path')
7:打印环境变量
# print(os.environ)
8:牢记(dirname),用执行文件添加环境变量
# print(os.path.dirname(r'文件path'))
print(os.path.dirname(__file__))
9 import sys
# sys.path.append(r'文件path')
10:判断文件是否存在
print(os.path.exists(r'文件path')
11:拼接文件路径,因为不同的操作系统的路径拼接符不一样
#好比自己以后写的程序不是在自己的系统上运行,在linuxs系统上
print(os.path.join(r'文件path'))
1:创建文件夹
os.mkdir('bbb')
2:删除空文件夹,递归往上删除空的文件夹
os.removedirs
五、sys模块
其作用与python交互
import sys
1:牢记,当使用python file.py 参数,接收参数
print(sys.argv)
# ['Z:/Python9期视频/day 17/05 sys模块.py']
2:获取解释器版本
print(sys.hexversion)
# 50726128
六、json和pickle模块,以及什么作用
序列化
保存数据,(从内存到硬盘这个过程叫做序列化,这个序列化必须是规定格式)
保存的格式 为json文件
反序列化
把json文件从硬盘中读取出来
json文件并不是python所独有的,所以的语言都有json,跨平台/语言传输数据
json文件中只能写入ptthon中的dict/list/str/int/float/bool/None
import json
dic={'name':'nick'}
with open('test.json','w',encoding='utf8')as fw:
json.dump(dic,fw)
with open('test.json','r',encoding='utf8')as fr:
data=json.load(fr)
print(data)
#{'name': 'nick'}
print(type(data))
#<class 'dict'>
pickle 也是序列化和反序列化,json可以跨平台,只支持dict/list/str/int/float/bool/None
pickle 支持python中任意数据类型,所以不能跨平台(不同平台的函数一定是不同的),pickle模块序列化过程是以二进制形式转换的
def func():
print('f1')
import pickle
# pickle由于传输的是二进制,所以应该用b模式
with open(r'D:\上海python全栈9期\Python9期视频\day 17\m1\test.pkl','wb') as fw:
pickle.dump(func,fw)
with open(r'D:\上海python全栈9期\Python9期视频\day 17\m1\test.pkl','rb') as fr:
data = pickle.load(fr)
data()
程序的道路上一去不复返