一.列举常用的Python标准库:
OS操作系统;time时间;random随机;pymysql连接数据库;threading线程;multiprocessing进程;queue队列。
二.第三方库:
Django;Flask;requests;virtualenv;selenium;scrapy;xadmin;celery;re;hashlib;md5。
三.常用的科学计算库:
Numpy,Scipy,Pandas
四.time模块常用方法
1.追溯time模块源码,里面包含11种方法,如下所示:
import time
The Epoch is system-defined; on Unix, it is generally January 1st, 1970.
time() -- return current time in seconds since the Epoch as a float
clock() -- return CPU time since process start as a float
sleep() -- delay for a number of seconds given as a float
gmtime() -- convert seconds since Epoch to UTC tuple
localtime() -- convert seconds since Epoch to local time tuple
asctime() -- convert time tuple to string
ctime() -- convert time in seconds to string
mktime() -- convert local time tuple to seconds since Epoch
strftime() -- convert time tuple to string according to format specification
strptime() -- parse string to time tuple according to format specification
tzset() -- change the local timezone
2. 上面一堆英文,想必有些朋友看到会思绪凌乱,不过别慌,现在一一解释,如下:
Epoch:指的是一个特定的时间:1970-01-01 00:00:00 UTC
UTC:协调世界时,又称世界统一时间、世界标准时间、国际协调时间;中国大陆、中国香港、中国澳门、中国台湾、蒙古 国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。
UNIX:Unix时间戳(英文为Unix time, POSIX time 或 Unix timestamp)是从Epoch(1970年1月1日00:00:00 UTC)开始所 经过的秒数,不考虑闰秒。
In [2]: time.time()
Out[2]: 1531753784.4076538
time.time(),返回当前时间的时间戳。
time.clock(),以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时。这个需要注意,在不同的系统上含义不 同。在UNIX系统上,它返回的是"进程时间",它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的 是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。
time.sleep(),线程推迟指定的时间后运行。单位为秒。
time.gmtime(),是将一个时间戳转换为UTC时区(0时区)的struct_time,元组的形式体现。
In [5]: time.gmtime()
Out[5]: time.struct_time(tm_year=2018, tm_mon=7, tm_mday=16, tm_hour=15, tm_min=50, tm_sec=36, tm_wday=0, tm_yday=197, tm_isdst=0)
time.localtime(),将一个时间戳转换为当前时区的struct_time,即当前时间,同样以元组形式体现。
In [6]: time.localtime()
Out[6]: time.struct_time(tm_year=2018, tm_mon=7, tm_mday=16, tm_hour=23, tm_min=53, tm_sec=40, tm_wday=0, tm_yday=197, tm_isdst=0)
time.asctime(),把一个表示时间的对象(元组或者struct_time)表示为以下字符串形式。不传参数的话,默认为当前时间。
In [7]: time.asctime()
Out[7]: 'Mon Jul 16 23:56:51 2018'
time.ctime(),把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未指定,将会默认time.time()为参 数。
In [8]: time.ctime()
Out[8]: 'Tue Jul 17 00:02:01 2018'
In [9]: time.ctime(time.time())
Out[9]: 'Tue Jul 17 00:02:15 2018'
time.mktime(),将一个时间对象(struct_time,元组形式)转化为时间戳。
In [10]: time.mktime(time.localtime())
Out[10]: 1531757173.0
time.strftime(format[, t]),把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的 时间字符串。如果t未指定,将传入time.localtime()。通俗地讲就是把时间对象转化为字符串形式。如果元组中任何一个元素 越界,ValueError的错误将会被抛出。
time.strptime(string[, format]):把一个格式化时间字符串转化为struct_time,即时间对象。实际上它和strftime()是逆操作。
3.下面我列举个案例,来体现时间模块的几个应用
本案例以统计网站的月新增人数为需求,进行如下逻辑处理,仅供参考:
# 月新增人数的统计
mon_count = 0
# tm_year=2018, tm_mon=7, tm_mday=4,
t = time.localtime()
# 获取当前的1号的日期字符串
mon_begin_date_str = '%d-%02d-01' % (t.tm_year,t.tm_mon)
# 把日期字符串转成日期对象
mon_begin_date = datetime.strptime(mon_begin_date_str,'%Y-%m-%d')
# 查询数据库,用户的注册时间大于当前日期
try:
mon_count = User.query.filter(User.is_admin==False,User.create_time>mon_begin_date).count()
except Exception as e:
current_app.logger.error(e)
return jsonify(errno=RET.DBERR,errmsg='查询月人数异常')