Python学习—基础篇之常用模块 - cdcx
Python学习—基础篇之常用模块
常用模块
模块,用一砣代码实现了某个功能的代码集合。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。
python常用模块主要有:
1. time模块
2. random模块
3. hashlib模块
4. os模块
5. sys模块
6. logging模块
7. 序列化模块
8. configparser模块
9. re模块
10. shutul模块
11. subprocess模块
12. xml模块
13. paramiko模块
引入模块的方式
1 import module2 import module.xxx as name
3 from module import xxx,xxx
4 from module import *
对于第二种的引入方式,将导入的模块或者模块方法重命名,个人觉得好处主要有以下两点:
1.对于模块名过于冗长的模块,可以方便使用;
2.对于某些功能可能涉及到修改模块的源码,这样的导入方式可以避免影响到原来的模块(类似于为每个项目建一个自己的虚拟环境)。
time模块
1.表示时间的三种方式:
(1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
(2)格式化的时间字符串(Format String): ‘1988-03-16’
(3)元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
# <1> 时间戳import time
time.time() #--------------返回当前时间的时间戳:1493136727.099066
# <2> 时间字符串
time.strftime("%Y-%m-%d %X") # -----------\'2017-04-26 00:32:18\'
# <3> 时间元组
time.localtime()
time.struct_time(tm_year=2017, tm_mon=4, tm_mday=26,
tm_hour=0, tm_min=32, tm_sec=42, tm_wday=2,
tm_yday=116, tm_isdst=0)
2.几种时间形式的转换
1 #一 时间戳<---->结构化时间: localtime/gmtime mktime2
3 time.localtime(3600*24)
4 time.gmtime(3600*24)
5
6 time.mktime(time.localtime())
7
8
9 #字符串时间<---->结构化时间: strftime/strptime
10
11 time.strftime("%Y-%m-%d %X", time.localtime())
12 time.strptime("2017-03-16","%Y-%m-%d")
1 time.asctime(time.localtime(312343423))2
3 time.ctime(312343423)
3.time & datetime常用操作
1 #_*_coding:utf-8_*_2 __author__ = \'Alex Li\'
3
4 import time
5
6
7 # print(time.clock()) #返回处理器时间,3.3开始已废弃 , 改成了time.process_time()测量处理器运算时间,不包括sleep时间,不稳定,mac上测不出来
8 # print(time.altzone) #返回与utc时间的时间差,以秒计算\
9 # print(time.asctime()) #返回时间格式"Fri Aug 19 11:14:16 2016",
10 # print(time.localtime()) #返回本地时间 的struct time对象格式
11 # print(time.gmtime(time.time()-800000)) #返回utc时间的struc时间对象格式
12
13 # print(time.asctime(time.localtime())) #返回时间格式"Fri Aug 19 11:14:16 2016",
14 #print(time.ctime()) #返回Fri Aug 19 12:38:29 2016 格式, 同上
15
16
17
18 # 日期字符串 转成 时间戳
19 # string_2_struct = time.strptime("2016/05/22","%Y/%m/%d") #将 日期字符串 转成 struct时间对象格式
20 # print(string_2_struct)
21 # #
22 # struct_2_stamp = time.mktime(string_2_struct) #将struct时间对象转成时间戳
23 # print(struct_2_stamp)
24
25
26
27 #将时间戳转为字符串格式
28 # print(time.gmtime(time.time()-86640)) #将utc时间戳转换成struct_time格式
29 # print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #将utc struct_time格式转成指定的字符串格式
30
31
32
33
34
35 #时间加减
36 import datetime
37
38 # print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
39 #print(datetime.date.fromtimestamp(time.time()) ) # 时间戳直接转成日期格式 2016-08-19
40 # print(datetime.datetime.now() )
41 # print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
42 # print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
43 # print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
44 # print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
45
46
47 #
48 # c_time = datetime.datetime.now()
49 # print(c_time.replace(minute=3,hour=2)) #时间替换
View Code
random模块
1 import random2 random.random() # 大于0且小于1之间的小数 0.7664338663654585
3
4 random.randint(1,5) # 大于等于1且小于等于5之间的整数
5
6 random.randrange(1,3) # 大于等于1且小于3之间的整数
7
8 random.choice([1,\'23\',[4,5]]) # #1或者23或者[4,5]
9
10 random.sample([1,\'23\',[4,5]],2) # #列表元素任意2个组合 [[4, 5], \'23\']
11
12 random.uniform(1,3) #大于1小于3的小数 1.6270147180533838
13
14 item=[1,3,5,7,9]
15 random.shuffle(item) # 打乱次序 item[5, 1, 3, 7, 9]
16 random.shuffle(item) # item [5, 9, 7, 1, 3]
View Code
1 # 随机生成验证码2
3 import random
4
5 def v_code():
6
7 code = \'\'
8 for i in range(5):
9
10 num=random.randint(0,9)
11 alf=chr(random.randint(65,90))
12 add=random.choice([num,alf])
13 code="".join([code,str(add)])
14
15 return code
16
17 print(v_code())
随机生成验证码
hashlib模块
哈希算法(散列算法):通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示),常常用于对密码进行加密。hashlib模块主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 等加密算法。
1 import hashlib2
3 # ######## md5 ########
4 hash = hashlib.md5()
5 # help(hash.update)
6 hash.update(bytes(\'admin\', encoding=\'utf-8\'))
7 print(hash.hexdigest()) #16进制格式hash
8 print(hash.digest()) #2进制格式hash
9
10
11 ######## sha1 ########
12
13 hash = hashlib.sha1()
14 hash.update(bytes(\'admin\', encoding=\'utf-8\'))
15 print(hash.hexdigest())
16
17 # ######## sha256 ########
18
19 hash = hashlib.sha256()
20 hash.update(bytes(\'admin\', encoding=\'utf-8\'))
21 print(hash.hexdigest())
22
23
24 # ######## sha384 ########
25
26 hash = hashlib.sha384()
27 hash.update(bytes(\'admin\', encoding=\'utf-8\'))
28 print(hash.hexdigest())
29
30 # ######## sha512 ########
31
32 hash = hashlib.sha512()
33 hash.update(bytes(\'admin\', encoding=\'utf-8\'))
34 print(hash.hexdigest())
View Code
以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。
1 import hashlib2
3 # ######## md5 ########
4
5 hash = hashlib.md5(bytes(\'898oaFs09f\',encoding="utf-8"))
6 hash.update(bytes(\'admin\',encoding="utf-8"))
7 print(hash.hexdigest())
python内置还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密
1 import hmac2
3 h = hmac.new(bytes(\'898oaFs09f\',encoding="utf-8"))
4 h.update(bytes(\'admin\',encoding="utf-8"))
5 print(h.hexdigest())
To be continue....
posted on
2019-01-25 00:20
cdcx
阅读(161)
评论(0)
编辑
收藏
举报
以上是 Python学习—基础篇之常用模块 - cdcx 的全部内容, 来源链接: utcz.com/z/386841.html