Python学习笔记-Day23-模块(时间、随机数、sys、os)
内容大纲
一、时间模块
二、随机数模块
三、sys模块
四、os模块
一、时间模块
时间的三种格式
时间戳时间:timestamp = time.time() ,0是伦敦时间1970/1/1 0:0:0,北京时间1790/1/1 8:0:0
结构化时间:struct_time= time.localtime()
格式化时间:format_time = time.strfrime(fmt)
几种格式:
%y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身
三种时间格式之间互相转化:
时间戳时间----->结构化时间:struct_time=time.localtime(timestamp) 或 struct_time=time.gmtime(timestamp)转化成伦敦时间
结构化时间----->格式化时间:format_time= time.strftime(fmt,struct_time)
格式化时间----->结构化时间:struct_time= time.strptime(format_time,fmt)
结构化时间----->时间戳时间:timestamp= time.mktime(struct_time)
例题一:求两个时间的差
import time def timediff(time1,time2): struct_time1 = time.strptime(time1,'%Y-%m-%d %H:%M:%S') stamp_time1 = time.mktime(struct_time1) struct_time2 = time.strptime(time2, '%Y-%m-%d %H:%M:%S') stamp_time2 = time.mktime(struct_time2) diff = abs(stamp_time1-stamp_time2) struct_time = time.gmtime(diff) return '%s年%s月%s天%s小时%s分钟%s秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,struct_time.tm_yday-1,struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec) ret = timediff('2018-9-8 23:34:12','2018-9-7 22:33:11') print(ret) # 0年0月1天1小时1分钟1秒
例题二:计算本月1号的时间戳:
import time def func(): format_time = time.strftime('%Y-%m-1') struct_time = time.strptime(format_time,'%Y-%m-1') timestamp = time.mktime(struct_time) return timestamp ret = func() print(ret)
二、随机数模块
1、随机取小数
random.random():随机取(0,1)之间的小数
random.uniform(m,n):随机取(m,n)之间的小数
2、随机取整数:
random.randint(m,n):随机取[m,n]之间的整数
random.randrange(m.n):随机取[m,n)之间的整数
random.randrange(m,n,s):按步长s随机取 [m,n)之间的整数
3、随机取列表、元组、字符串、range中的数
random.choice(lst):随机从列表lst中取一个数
random.example(lst,n):随机从列表中取n个数
4、乱序
random.shuffle(lst):打乱原列表
例题1:生成验证码,包含数字和大小写字母
import random def get_code(n=4,alpha=True): code = '' for i in range(n): c = str(random.randint(0,9)) if alpha is True: alpha_upper = chr(random.randint(65,90)) alpha_lower = chr(random.randint(97,122)) c = random.choice([c,alpha_upper,alpha_lower]) code += c return code ret = get_code() print(ret) # 4r79 ret1 = get_code(n=6,alpha=False) print(ret1) # 246842
例题2:发红包
import random def lucky_money(money,people_num): lst = random.sample(range(money*100),people_num-1) lst.sort() # 按大小排序 lst.insert(0,0) lst.append(money*100) money_lst = [] for i in range(people_num): getmoney = lst[i+1] - lst[i] money_lst.append(getmoney/100) return money_lst ret = lucky_money(100,10) print(ret) # [8.43, 1.54, 19.19, 5.52, 1.91, 1.32, 18.36, 6.03, 13.08, 24.62]
三、os模块
1、和文件夹、文件相关
os.mkdir('diename'):在当前文件夹下生成单级目录,若该目录已经存在会报错
os.makedirs('dirname1/dirname2/dirname3'):在当前文件夹下生成多级目录
os.rmdir('dirname'):删除当级的空目录,若目录不为空不能删除并报错
os.removedirs('dirname1/dirname2/dirname3'):若目录为空,则删除,并递归到上一级目录,若也为空则删除,知道不为空的目录
lst = os.listdir('dirname') :列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式返回
os.remove('filename'):删除一个文件,不能删除目录
os.remove('newname','oldname'):重命名一个文件/目录
ret = os.stat('file_path/dirname'):获取文件/目录信息
2、和路径相关:
path = os.path.abspath(path):返回path的规范化路径
tuple = os.path.split(path):将path分割成路径和文件名,以二元组方式返回
dir = os.path.dirname(path):获取文件的目录,就是split元组的第一个元素
filename = os.path.basename(path) :获取一个路径的文件名,即split元组的第二个元素
os.path.exists(path) :判断路径是否存在
os.path.isabs(path):判断路径是否是绝对路径,该路径不一定存在
os.path.isfile(path):判断path路径是不是一个存在的文件
os.path.isdir(path) :判断path是不是一个存在的文件
path = os.path.join('path1','path2','path3'...):将多个路径组合后返回,第一个绝对路径之前的参数会被忽略
os.path.getatime(path):返回path所指向的文件或目录的最后访问时间
os.path.getmtime(path):返回path所指向的文件或目录的最后修改时间
os.path.getsize(path):返回path指向的文件或目录的大小,若path指向目录,则大小是4096的倍数
3、和python程序的工作目录相关
os.getcwd():获取当前的工作目录,即当前python脚本工作的目录路径
os.chdir('dirname') :改变当前脚本工作目录;相当于shell下的cd
4、操作系统命令相关
os.system('base command') :运行shell命令
os.popen('base command').read():运行shell命令,获取执行结果
例题1:获取当前文件的上上级目录
import os base_path = os.path.dirname(os.path.dirname(__file__)) print(base_path) # C:/python
例题2:计算一个文件夹的大小
---恢复内容结束---
内容大纲
一、时间模块
二、随机数模块
三、sys模块
四、os模块