一.random模块
取随机小数:数学计算
1 import random2 print(random.random()) # 取0-1之间的小数3 print(random.uniform(1.,2)) #取1-2之间的小数
取随机整数:彩票 抽奖
import randomprint(random.randint(1,2)) #[1,2]print(random.randrange(1,2)) # [1,2)print(random.randrange(1,10,2)) #大于等于1且小于10之间的奇数
从一个列表中随机抽取值: 抽奖
1 import random2 l= ["s","b",(1,2),123]3 print(random.choice(l))4 print(random.sample(l, 2))
打乱一个列表的顺序,在原列表的基础上直接进行修改,节省空间 :洗牌
1 import random2 l = ["s","b",(1,2),123]3 random.shuffle(l)4 print(l)
习题 :验证码
1 # 四位验证码 2 import random 3 s = "" 4 for i in range(4): 5 sum = random.randint(0,9) 6 s += str(sum) 7 print(s) 8 # 六位验证码 9 import random10 s = ""11 for i in range(6):12 sum = random.randint(0,9)13 s = s + str(sum)14 print(s)15 # 函数版本16 import random17 def code(n=6):18 s = ""19 for i in range(n):20 num = random.randint(0,9)21 s = s+ str(num)22 return s23 print(code(4))24 print(code())25 # 6位数字+字母验证码26 import random27 def code(n = 6):28 s = ""29 for i in range(n):30 num = str(random.randint(0,9))31 alpha_upper = chr(random.randint(65,90))32 alpha_lower = chr(random.randint(97,122))33 ret = random.choice([num,alpha_upper,alpha_lower])34 s +=ret35 return s36 print(code(4))37 print(code())38 # 一起的39 import random40 def code(n=6,alpha = True):41 s = ""42 for i in range(n):43 sum = str(random.randint(0,9))44 if alpha:45 alpha_upper = chr(random.randint(65,90))46 alpha_lower = chr(random.randint(97,122))47 sum = random.choice([sum,alpha_upper,alpha_lower])48 s += sum49 return s50 print(code(4,False))51 print(code())
二.时间模块
1 #常用方法2 1.time.sleep(secs)3 (线程)推迟指定的时间运行。单位为秒。4 2.time.time()5 获取当前时间戳
时间格式:
1.格式化的时间字符串(Format String): ‘1999-12-06’
2.结构化时间 元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
3.时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
索引(Index) | 属性(Attribute) | 值(Values) |
---|---|---|
0 | tm_year(年) | 比如2011 |
1 | tm_mon(月) | 1 - 12 |
2 | tm_mday(日) | 1 - 31 |
3 | tm_hour(时) | 0 - 23 |
4 | tm_min(分) | 0 - 59 |
5 | tm_sec(秒) | 0 - 60 |
6 | tm_wday(weekday) | 0 - 6(0表示周一) |
7 | tm_yday(一年中的第几天) | 1 - 366 |
8 | tm_isdst(是否是夏令时) | 默认为0 |
小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
几种格式之间的转换
时间戳时间
import timeprint(time.time())
格式化时间
import timeprint(time.strftime("%Y-%m-%d %H:%M:%S"))# 2018-0/8-20print(time.strftime("%y-%m-%d %H:%M:%S"))# 1/8-08-20print(time.strftime("%c"))# Mon Aug 20 16:59:08 2018
结构化时间
1 import time2 struct_time = time.localtime()3 print(struct_time)4 print(struct_time.tm_mon)
时间戳换成字符串时间
1 import time2 struct_time = time.localtime(1500000000)3 print(time.gmtime(1500000000))4 # time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)5 6 ret = time.strftime('%y-%m-%d %H:%M:%S',struct_time)7 print(ret)8 # 17-07-14 10:40:00
字符串时间 转 时间戳
1 import time2 struct_time = time.strptime('2018-8-8','%Y-%m-%d')3 print(struct_time)4 # time.struct_time(tm_year=2018, tm_mon=8, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=220, tm_isdst=-1)5 res = time.mktime(struct_time)6 print(res)7 # 1533657600.0
习题
1 # 1.查看一下2000000000时间戳时间表示的年月日 2 # 时间戳 - 结构化 - 格式化 3 import time 4 struct_t = time.localtime(2000000000) 5 print(struct_t) 6 print(time.strftime('%y-%m-%d',struct_t)) 7 8 # 2.将2008-8-8转换成时间戳时间 9 import time10 t = time.strptime('2008-8-8','%Y-%m-%d')11 print(time.mktime(t))12 13 # 3.请将当前时间的当前月1号的时间戳时间取出来 - 函数14 # 2018-8-115 import time16 def get_time():17 st = time.localtime()18 st2 = time.strptime('%s-%s-1'%(st.tm_year,st.tm_mon),'%Y-%m-%d')19 return time.mktime(st2)20 print(get_time())21 22 # 4.计算时间差 - 函数23 # 2018-8-19 22:10:8 2018-8-20 11:07:324 # 经过了多少时分秒25 import time26 str_time1 = '2018-8-19 22:10:8'27 str_time2 = '2018-8-20 11:07:3'28 struct_t1 = time.strptime(str_time1,'%Y-%m-%d %H:%M:%S')29 struct_t2 = time.strptime(str_time2,'%Y-%m-%d %H:%M:%S')30 timestamp1 = time.mktime(struct_t1)31 timestamp2 = time.mktime(struct_t2)32 sub_time = timestamp2 - timestamp133 gm_time = time.gmtime(sub_time)34 # 1970-1-1 00:00:0035 print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(gm_time.tm_year-1970,gm_time.tm_mon-1,36 gm_time.tm_mday-1,gm_time.tm_hour,37 gm_time.tm_min,gm_time.tm_sec))
三.sys模块
sys 是和Python解释器打交道的
sys.argv 命令行参数List,第一个元素是程序本身路径
import sysprint(sys.argv) # argv的第一个参数 是python这个命令后面的值
sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
1 import sys2 usr = input('username')3 pwd = input('password')4 # usr = sys.argv[1]5 # pwd = sys.argv[2]6 if usr == 'alex' and pwd == 'alex3714':7 print('登录成功')8 else:9 exit()
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
1 import sys2 sys.path3 print(sys.path)
1 import sys2 import re3 sys.modules4 print(sys.modules) # 是我们导入到内存中的所有模块的名字 : 这个模块的内存地址5 print(sys.modules['re'].findall('\d','abc126'))6 # ['1', '2', '6']
四.os模块
1 os.makedirs('dirname1/dirname2') 可生成多层递归目录2 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推3 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname4 os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname5 os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印6 os.remove() 删除一个文件7 os.rename("oldname","newname") 重命名文件/目录8 os.stat('path/filename') 获取文件/目录信息
1 os.system("bash command") 运行shell命令,直接显示2 os.popen("bash command).read() 运行shell命令,获取执行结果3 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径4 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd