一、datetime
datetime是Python处理日期和时间的标准库。
1、获取当前日期和时间
1 2 3 4 5 6 7 8 9 10 11 | >>>fromdatetimeimportdatetime
>>> now=datetime.now()
>>>print(now)
2021-06-1409:33:10.460192
>>>print(type(now))
<class'datetime.datetime'>
|
2、获取指定日期和时间
1 2 3 4 5 6 7 | >>>fromdatetimeimportdatetime
>>> dt=datetime(2021,6,10,12,0)
>>>print(dt)
2021-06-1012:00:00
|
3、datetime转换为timestamp
在计算机中,时间实际上是用数字表示的。我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp(时间戳)。
1 2 3 4 5 6 7 8 9 10 11 | >>>fromdatetimeimportdatetime
>>> now=datetime.now()
>>> now
datetime.datetime(2021,6,14,9,38,34,969006)
>>> now.timestamp()#把datetime转换为timestamp
1623634714.969006
|
4、timestamp转换为datetime
1 2 3 4 5 6 7 | >>>fromdatetimeimportdatetime
>>> timestamp=1623634714.969006
>>>print(datetime.fromtimestamp(timestamp))
2021-06-1409:38:34.969006
|
5、str转换为datetime
1 2 3 4 5 6 7 | >>>fromdatetimeimportdatetime
>>> day=datetime.strptime('2021-6-10 12:12:12','%Y-%m-%d %H:%M:%S')
>>>print(day)
2021-06-1012:12:12
|
6、datetime转换为str
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | >>>fromdatetimeimportdatetime
>>> now=datetime.now()
>>>print(now)
2021-06-1409:49:02.281820
>>>print(type(now))
<class'datetime.datetime'>
>>> str_day=now.strftime('%Y-%m-%d %H:%M:%S')
>>>print(str_day)
2021-06-1409:49:02
>>>print(type(str_day))
<class'str'>
|
二、collections
collections是Python内建的一个集合模块,提供了许多有用的集合类,其中统计功能非常实用。
Counter
Counter是一个简单的计数器,例如,统计字符出现的个数
1 2 3 4 5 6 7 8 9 10 11 | >>>fromcollectionsimportCounter
>>> c=Counter()
>>>str='jdkjefwnewnfjqbefbqbefqbferbb28934`83278784727'
>>> c.update(str)
>>> c
Counter({'b':6,'e':5,'f':5,'8':4,'7':4,'j':3,'q':3,'2':3,'w':2,'n':2,'3':2,'4':2,'d':1,'k':1,'r':1,'9':1,'`':1})
|
三、base64
Base64是一种用64个字符来表示任意二进制数据的方法。
用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。
1 2 3 4 5 | >>>importbase64
>>> base64.b64encode(b'binary\x00string')
b'YmluYXJ5AHN0cmluZw=='
>>> base64.b64decode(b'YmluYXJ5AHN0cmluZw==')
b'binary\x00string'
|
四、hashlib
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。
什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
我们以常见的摘要算法MD5为例,计算出一个字符串的MD5值:
1 2 3 4 5 6 7 8 9 | >>>importhashlib
>>> md5=hashlib.md5()
>>> md5.update("程序员唐丁".encode('utf-8'))
>>>print(md5.hexdigest())
05eb21a61d2cf0cf84e474d859c4c055
|
摘要算法能应用到什么地方?举个常用例子:
任何允许用户登录的网站都会存储用户登录的用户名和口令。如何存储用户名和口令呢?方法是存到数据库表中。如果以明文保存用户口令,如果数据库泄露,所有用户的口令就落入黑客的手里。此外,网站运维人员是可以访问数据库的,也就是能获取到所有用户的口令。正确的保存口令的方式是不存储用户的明文口令,而是存储用户口令的摘要,比如MD5,当用户登录时,首先计算用户输入的明文口令的MD5,然后和数据库存储的MD5对比,如果一致,说明口令输入正确,如果不一致,口令肯定错误。