1.时间模块
1.time
时间分为三种格式:
import time
#1.时间戳:从1970年到现在经过的秒数
#作用:用于时间间隔的计算
print(time.time())
#2.按照某种格式显示时间:
#作用:用于时间的展示
print(time.strftime('%Y-%m-%d %H-%M-%S %p'))#2021-07-17 14-19-31 PM
#年月日时分秒下午PM上午AM
print(time.strftime('%Y-%m-%d %X %p'))#2021-07-17 14:20:34 PM 时分秒简写为%X
#3.结构化时间
#用户单独获取时间的某一部分
res=time.localtime()
print(res)
#time.struct_time(tm_year=2021, tm_mon=7, tm_mday=17, tm_hour
# =14, tm_min=22, tm_sec=30, tm_wday=5, tm_yday=198, tm_isdst=0)
print(res.tm_year)#2021
时间格式格式的转换
格式字符串形式<===>结构化形式<===>时间戳形式
#格式化字符串形式format string------>结构化struct------->时间戳timestamp
#2021-07-17 16:03:30
struct_time=time.strptime('2021-07-17 16:03:30','%Y-%m-%d %H:%M:%S')
print(struct_time)
#time.struct_time(tm_year=2021, tm_mon=7, tm_mday=17, tm_hour=16,
# tm_min=3, tm_sec=30, tm_wday=5, tm_yday=198, tm_isdst=-1)
#格式化字符串形式转结构化形式
timestamp=time.mktime(struct_time)
print(timestamp)#1626509010.0 结构化转时间戳
timestamp=timestamp+7*86400
print(timestamp)#1627113810.0 增加七天
#时间戳timestamp------>结构化struct------->格式化字符串形式format string
res=time.strftime('%Y-%m-%d %X',time.localtime(timestamp))
print(res)#2021-07-24 16:03:30
其他可能会用到的方法,了解即可
print(time.asctime())#Sat Jul 17 21:08:00 2021 linux常用的时间展示形式
print(datetime.datetime.now())#2021-07-17 21:09:44.693401
print(datetime.datetime.utcnow())#2021-07-17 13:09:44.693401
#当地标准时间,比世界标准时间提前8小时
print(datetime.datetime.fromtimestamp(1627113810))
#2021-07-24 16:03:30 时间戳直接转成格式化字符串
2.datetime
import datetime
print(datetime.datetime.now())#2021-07-17 14:28:14.134401
print(datetime.datetime.now()+datetime.timedelta(days=3))
#2021-07-20 14:29:36.909401 三天后的时间,用于时间的计算
#用于时间加减的计算
#鼠标放到datetime.timedelta(),点击Ctrl键,可以跳转到此方法源码
#查看到源码,得知参数信息:
#days、seconds、microseconds、milliseconds、 minutes、hours、weeks:、fold:
2.random模块
import random
print(random.random())
#0.9487121778268897 产生(0,1)之间float的随机小数
print(random.randint(1,10))#3 [1,10]之间的随机整数
print(random.randrange(1,10))#3 [1,10)之间的随机整数
print(random.choice([1,'23',[4,5]]))#[4, 5] 1或'23'或[4,5]
print(random.sample([1,'23',[4,5]],2))#[[4, 5], 1] 列表元素任意2个组合新列表
print(random.uniform(1,3))#1.1606450071879246 大于1小于3的小数
item=[1,3,6,9,22,7]
random.shuffle(item)#打乱item顺序,相当于“洗牌”
print(item) #[7, 22, 1, 6, 9, 3]
应用案例:验证码
import random
def make_code(size):
res = ''
for i in range(size):
a = chr(random.randint(65, 90)) # 从26个大写字母中取一个
b = str(random.randint(0, 9)) # 从10个数字里随机取一个
c = random.choice([a, b])
res += c
return res
print(make_code(5))
3.os模块
import os
# res=os.listdir(r'F:\S14\day22')
#获取一个文件夹下所有文件名和文件夹名
#获取当前同级目录的文件名和文件夹名
res=os.listdir(r'.')
print(res)#['__pycache__', '时间模块.py', 'random模块.py', 'os模块.py']
#获取上一级目录的文件名和文件夹名
res=os.listdir(r'..')
print(res)
#['.idea', 'day4', 'day5', 'day6', 'day7', 'day8', 'day9', 'day10',
# 'day11', 'day12', 'day13', 'day14', 'day15', 'day16', 'day17',
# 'day18', 'day19', 'day20', 'day21', 'day22']
#获取指定文件的大小,单位:字节
size=os.path.getsize(r'F:\S14\day22\random模块.py')
print(size)#937
os.rename("oldname","newname") #重命名文件/目录
os.remove(r'') #删除一个文件
取文件名 目录名
print(__file__)# F:/S14/day22/os模块.py
print(os.path.abspath(__file__))# F:\S14\day22\os模块.py
#取文件名 目录名
res=os.path.split(r'c/d/f/aa.txt')
print(res)#('c/d/f', 'aa.txt')
res=os.path.dirname(r'c/d/f/aa.txt')
print(res)#c/d/f
res=os.path.basename(r'c/d/f/aa.txt')
print(res)#aa.txt
#路径拼接
print(os.path.join('a','b','c','d'))#a\b\c\d
python3.5以后,BASE_DIR项目目录的新写法
from pathlib import Path
BASE_DIR=Path(__file__).parent.parent
print(BASE_DIR)#F:\S14
#路径拼接
res=Path('a/b/c')/'d/e.txt'
print(res)#a\b\c\d\e.txt
4.sys
传统传参都是通过程序内部传参,运行程序时,从程序外传参到程序内
import sys
#传统传参都是通过程序内部传参,运行程序时,从程序外传参到程序内
#sys.argv#获取的是解释器后的参数值
print(sys.argv)
5.打印进度条
import time
def progress(percent):
if percent > 1:
percent = 1
res = int(50 * percent) * '#'
print('\r[%-50s]%d%%' % (res, int(100 * percent)), end='')
recv_size = 0
total_size = 33333
while recv_size < total_size:
time.sleep(0.3) # 模仿网速慢
recv_size += 1024
# 打印进度条
# print(recv_size)
percent = recv_size / total_size
progress(percent)