常用模块--random模块,time模块,os 模块,sys模块

什么是模块?

常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.Py的后缀。

但其实import加载的模块分为四个通用的类别

1 使用python编写的代码

2  已被编译为共享库或DLL的C或C++扩展

3 包好一组模块的包、

4 使用C编写并链接到python解释器的内置模块

一 random模块

 1 去随机小数:数学计算
 2 print(random.randint())     取0-1之间的小数
 3 print(random.randint(1,2))    [1,2]
 4 
 5 
 6 
 7 取随机整数:彩票 抽奖
 8 print(random.randint(1,2))   [1,2]
 9 print(radom.randrange(1,2))  [1,2)
10 print(random.randrange(1,200,2))   1-200之间 每两个取一个
11 
12 
13 从一个列表中随机抽取值:抽奖
14 s=['a','b',(1,2,3),456]
15 print(random.choice(s))
16 
17 print(random.sample(s,2))   从s列表中随机抽取一次两个数
random模块
 1 打乱一个列表的顺序,在原列表的基础上直接进行修改,节省空间
 2 
 3 洗牌
 4 s=('a','b',(1,2,3,4),456)
 5 random.shuffle(s)
 6 print(s)
 7 
 8 
 9 
10 验证码 --练习
11 4位数字的验证码
12 6位数字的验证码
13 6位数字+字母验证码
14 
15 
16 #4位数字的验证码
17 s=" "
18 for i in range(4):
19      num=random.randint(0,9)
20      s +=str(num)
21 print(s)
22 
23 
24 #6位数字的验证码
25 s=""
26 for i in range(6):
27       num=random.randint(0,9)
28       s += str(num)
29 print(s)
30 
31 函数版本
32 def code(n):
33       for i in range(n):
34          num=randiom.randint(0,9)
35          s +=num
36        return s
37 ret=code(6)
38 print(ret)
39 
40 #6位数字和字母的验证码
41 s=""
42 for i in rang(6)
43       num=str(random.randint(0,9))
44       alpha_upper=chr(random.randint(65,90))
45       alpha_lower=char(random.randint(97,122))
46       res=random.choice([num,alpha_upper,alpha_lower])
47       s+=res
48 print(s)
49 
50 
51 函数版本的组合(4位数字验证码,6位数字验证码,6位数字和字母验证码)
52 基本设计
53 def code(n=6,alpha=True):    默认参数是6
54       s=''
55        for i in range(n):
56        if alpha:
57          num=str(random.randint(0,9))
58          alpha_upper=chr(random.randint(65,90))
59          alpha_lower=chr(random.randint(97,122))
60          res=random.chioce([num,alpha_upper,alpha_lower])
61          s +=res
62        else:
63            num=random.randint(0,9)
64            s +=str(num)
65       return s
66 print(code(4))
67 pritn(code())
68 
69 
70 
71 函数版本简化(代码简洁)
72 def code(n=6,alpha=True):
73       s=‘’
74       for i in range(n):
75            num=str(random.randint(0,9))
76            if alpha:
77               num=str(random.randint(0,9))
78               alpha_upper=random.randint(65,90)
79               alpha_lower=random.randint(97,122)
80               num=random.choice([num,alpha_upper,alpha_lower])  数字,小写大写字母取一个
81               s +=num
82               return s
83 print(code(4,False))
84 print(code(alpha=False)
85       
86          
87           
88        
89       
90 
91        
92       
93         
随机验证码

二 时间模块(time)(时间模块主要是跟时间打交道的)

1 时间格式

(1)格式化时间

‘2018-8-20’ '2018.8.20' 字符串数据类型 格式化时间是给人看的

1 print(time.strftime(‘%Y-%m-%d %H:%M:%S’))   str format time
2 大写的年份:如 2018-8-20
3 
4 print(time.strftime("%y-%m-%d %H:%M:%S'))
5 小写的年份:如 18.8.20
6 
7 print(time.strftime('%c')
格式化时间

2)结构化时间

1534732642.617272 浮点型的数据类型,以秒为单位,给机器计算用的

结构化时间以伦敦的1970 1 1 0:0:0

1 struct_time=time.localtime()     北京时间
2 print(struct_time)
3 print(struct_time.tm_mon)       寻找结构化时间中的月份
结构化时间

 

(3)时间戳时间

print(time.time())

 

(4) 不同类型的时间之间的转换

                                        

1 print(time.time())
2 
3 struct_time=time.localtime(1500000000)   先转为结构化时间 
4 print(time.gmtime(1500000000))     gmtime是伦敦时间   
5 
6 ret=time.strftime('%Y-%m-%d %H:%M:%S',struct_time)   从结构化时间转为字符串时间
7 print(ret)
时间戳换成字符串时间
1 如:2018-8-20
2 struct_time=time.strptime('2018-8-20','%Y-%m-%d')
3 res=time.mktime(struct_time)
4 print(res)
字符串时间转为时间戳
 1 1 查看一下2000000000时间戳时间表示的年月日
 2 struct_time=time.localtime(2000000000)
 3 res=time.strftime('%Y-%m-%d',struct_time)
 4 print(res)
 5 
 6 
 7 2 将2008-8-8转换成时间戳时间
 8 struct_time=time.strptime('2018-8-8','%Y-%m-%d')
 9 print(time.mktime(struce_time))
10 
11 
12 3 将当前时间的当前月1号的时间戳时间取出来   ---用函数 (先找到字符串时间 在转时间戳)
13 2018-8-8
14 def get_time():
15    st=time.localtime()
16    str2=time.strptime('%s-%s-1' %(st.tm_year,st.tm_mon),'%Y-%m-%d')  格式化时间----结构化时间
17    return time.mktime(st2)   结构化时间转时间戳
18 print(get_time)
19 
20 
21 4 计算时间差--函数
22 2018-8-19 22:10:8        2018-8-20  11:07:3
23 经过了多少时分秒
24 
25 str_time1='2018-8-19 22:10:8  '
26 str_time2='2018-8-19 11:07:3  '
27 struct_t1=time.strptime(str_time1,'%Y-%m-%d')
28 struct_t2=time.strptime(str_time2,'%Y-%m-%d')
29 re1=time.mktime(struct_t1)
30 re2=time.mktime(struct_t2)
31 sub_time=re2-re1
32 gm_time=time.gmtime(sub_time)
33 #1970-1-1 00:00:00
34 print('过去了%d年%d月%d小时%d分钟%d秒‘ %(gm_time.tm_year-1970,gm_time.tm_mon-1,gm_time.tm_mday-1,gm_time.tm_hour-0,gm_time.tm_min-0,gm_time.tm_sec-0)
练习
 1 1 查看一下2000000000时间戳时间表示的年月日
 2 struct_time=time.localtime(2000000000)
 3 res=time.strftime('%Y-%m-%d',struct_time)
 4 print(res)
 5 
 6 
 7 2 将2008-8-8转换成时间戳时间
 8 struct_time=time.strptime('2018-8-8','%Y-%m-%d')
 9 print(time.mktime(struce_time))
10 
11 
12 3 将当前时间的当前月1号的时间戳时间取出来   ---用函数 (先找到字符串时间 在转时间戳)
13 2018-8-8
14 def get_time():
15    st=time.localtime()
16    str2=time.strptime('%s-%s-1' %(st.tm_year,st.tm_mon),'%Y-%m-%d')  格式化时间----结构化时间
17    return time.mktime(st2)   结构化时间转时间戳
18 print(get_time)
19 
20 
21 4 计算时间差--函数
22 2018-8-19 22:10:8        2018-8-20  11:07:3
23 经过了多少时分秒
24 
25 str_time1='2018-8-19 22:10:8  '
26 str_time2='2018-8-19 11:07:3  '
27 struct_t1=time.strptime(str_time1,'%Y-%m-%d')
28 struct_t2=time.strptime(str_time2,'%Y-%m-%d')
29 re1=time.mktime(struct_t1)
30 re2=time.mktime(struct_t2)
31 sub_time=re2-re1
32 gm_time=time.gmtime(sub_time)
33 #1970-1-1 00:00:00
34 print('过去了%d年%d月%d小时%d分钟%d秒‘ %(gm_time.tm_year-1970,gm_time.tm_mon-1,gm_time.tm_mday-1,gm_time.tm_hour-0,gm_time.tm_min-0,gm_time.tm_sec-0)
练习


三 sys模块

(1)sys.argv

1 sys是跟python解释器打交道的

2 sys.argv

  print(sys.argv)   argv 的第一个参数是pyton这个命令后面的值

1 user=input('username')
2 pwd=input('password')
3 user=sys.argv[1]
4 pwd=sys.argv[2]
5 if user=='alex' and pwd=='alex1111'
6    print('登录成功')
7 else8     print('登录失败')  或者直接退出  (exit())
使用argv进行登录

3 为什么要使用sys.argv?
(1)程序员 运维人员 在命令运行代码

 (2)操作系统input事件 阻塞 退出了cpu的竞争

(2)  sys.path

模块是存在硬盘上的,但是在使用的时候Import  ---》   这个模块才到内存中

(3)sys.modules

四 os 模块

(1)os 模块是和操作系统交互的模块

 1 os.makedirs('dis1/dis2')  可生成多层递归函数
 2 os.removedirs('dis1')       若目录为空,则删除,则递归到上一级目录,若也为空,则删除,依此类推
 3 os.mkdir('dis1')   生成单极目录
 4 os.rmdir('dir1')    删除单极空目录,若目录不为空,则无法删除,报错
 5 os.remove()删除一个文件
 6 os.rename('oldname','newname')   
 7 os.stat('path/filename')   获取文件/目录信息
 8 os.system("bash command")  运行shell命令,直接显示
 9 os.popen("bash command).read()  运行shell命令,获取执行结果
10 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
11 os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
12 
13 
14 os.path
15 os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 
16 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 
17 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
18 os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
19 os.path.isabs(path)  如果path是绝对路径,返回True
20 os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
21 os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
22 os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
23 os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
24 os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
25 os.path.getsize(path) 返回path的大小
os 模块的主要内容


 

猜你喜欢

转载自www.cnblogs.com/mlhz/p/9506853.html