一、time模块

三种时间表示

在Python中,通常有这几种方式来表示时间:

  • 时间戳(timestamp) : 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。(从1970年到现在这一刻一共有多少秒)我们运行“type(time.time())”,返回的是float类型。如 time.time()=1525688497.608947

  • 格式化的时间字符串(字符串时间) 如“2018-05-06”

  • 元组(struct_time) (结构化时间) : struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

1、time.time():

返回当前时间的时间戳

  import time
ti = time.time()
print(ti)

  

输出结果

  
  1525688497.608947

  

2、time.localtime( [secs] )

将一个时间戳转换为当前时区的struct_time,即时间数组格式的时间 。secs参数未提供,则以当前时间为准。

例子

  
  import time
#没有参数
print(time.localtime())
#有参数
print(time.localtime(1480000000))

  

输出结果

  
  time.struct_time(tm_year=2018, tm_mon=5, tm_mday=7, tm_hour=18, tm_min=46, tm_sec=25, tm_wday=0, tm_yday=127, tm_isdst=0)
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=24, tm_hour=23, tm_min=6, tm_sec=40, tm_wday=3, tm_yday=329, tm_isdst=0)

  

例子2

  import time

t=time.localtime()
print(t.tm_year) #取结构化时间中单独的数值
print(t.tm_mon)
print(t.tm_mday)

  

输出结果

  
  2018
5
6

  

结构化时间各元素表示含义

  
   tm_year    #年 1970-2018

tm_mon #月 1-12

tm_mday #日 1-31

tm_hour #时 0-23

tm_min #分 0-59

tm_sec #秒 0-59

tm_wday #一周中得第几天 0-6 ,星期一是0,周日是6

tm_yday #一年中得第几天 0-365

tm_isdst #是否是夏令时 0-1

  

3、gmtime([secs])

和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。

即返回当前的格林尼治时间的元组数值

4、 mktime(t)

将一个struct_time转化为时间戳。

例子

  
  import time
print(time.mktime(time.localtime()))

  

输出结果

  
  1525693661.0

  

5、asctime([t])

把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。

例子

  
  import time
print(time.asctime(time.localtime()))

  

输出结果

  
  Mon May  7 19:49:21 2018

  

6、 ctime([secs])

把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为

None的时候,将会默认time.time()为参数。

它的作用相当于time.asctime(time.localtime(secs))。

  
  import time
print(time.ctime())

  

输出结果

  
  Mon May  7 20:17:12 2018

  

7、 strftime(format[, t])

把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。

python中时间日期格式化符号:

  %y 两位数的年份表示(00-99)

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23) #注意是大写

%I 12小时制小时数(01-12)

%M 分钟数(00=59) #注意是大写

%S 秒(00-59) #注意是大写

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366)

%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身

  

例子

  
  import time

print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))

  

输出结果

  
  2018-05-07 20:33:32

  

8、strptime(string[, format])

把一个格式化时间(字符串时间)字符串转化为struct_time。实际上它和strftime()是逆操作。

  
  import time

print(time.strptime("2018/05/07 20:33:32","%Y/%m/%d %H:%M:%S")) #第一个参数这里的字符串分隔的字符#可以自己定义,第二个参数与第一个参数对应即可

  

输出结果

  
  time.struct_time(tm_year=2018, tm_mon=5, tm_mday=7, tm_hour=20, tm_min=33, tm_sec=32, tm_wday=0, tm_yday=127, tm_isdst=-1)

  

这里也可以单独取值

  
  import time

t=time.strptime("2018/05/07 20:33:32","%Y/%m/%d %H:%M:%S")
print(t.tm_mday)
print(t.tm_year)

  

输出结果

  7
2018

  

9、sleep(secs)

线程推迟指定的时间运行,单位为秒。

  
  import time

s1 = "你好"
s2 = "nicholas"
print(s1)
time.sleep(2)
print(s2)

  

输出结果

  你好  #程序延迟2秒后输出“nicholas”
nicholas

  

10、clock() (了解)

Python time clock() 函数以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。

这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是"进程时间",它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)

time不同形式相互转换

二、random模块

产生随机数值的模块

1、random.random()

随机产生大于0且小于1之间的小数

  
  import random
v1 = random.random()
print(v1)

  

2、random.uniform(a, b)

返回一个介于a和b之间的浮点数。一般是a<b,即返回a和b之间的浮点数,如果 a大于b,则是b到a之间的浮点数。这里的a和b都有可能出现在结果中。

  
  import random
v1 = random.uniform(1.1,2.5) #这里的a,b不一定的整数,一般会写成整数
print(v1)

  

3、random.randint(a,b)

返回range[a,b]之间的一个整数,即整数

  
  import random
v1 = random.randint(1,3) #这里a,b必须是整数,a,b都可以出现在结果中
print(v1)

  

4、random.randrange(start, stop[, step])

random.randrange(start, stop[, step]) # 返回range[start,stop)之间的一个整数,start\stop必须是整数,可加step,跟range(0,10,2)类似。

start缺省值为1,stop值不能取到。

  import random
v1 = random.randrange(1,5,2)
print(v1)

  

5、random.choice(seq)

从非空序列seq(字符串也是序列)中随机选取一个元素。如果seq为空则弹出 IndexError异常。

  
  import random
v1 = random.choice([1,5,2,"ni",{"k1":"v1"},["hi",8]])
print(v1)

  

输出结果

从列表[1,5,2,"ni",{"k1":"v1"},["hi",8]]随机返回一个元素

  import random

print(random.choice("nicholas"))

  

输出结果

随机返回字符串“nicholas”的一个字符

6、random.sample( population, k)

从population样本或集合中随机选取k个不重复的元素组成新的序列

  
  import random
v1 = random.sample([1,5,2,"ni",{"k1":"v1"},["hi",8]],3)
print(v1)

  

输出结果

从列表中随机抽出3个不重复的元素组成新的列表

7、random.shuffle()

将列表的顺序打乱

  
  import random
li = [1,5,2,3]
random.shuffle(li)
print(li)

  

输出结果:输出这4个元素随机顺序的列表

三、string模块(了解)

字符串方法见之前的博文。

下面是一些字符串常量

1、string.ascii_lowercase

返回字符串小写字母’abcdefghijklmnopqrstuvwxyz’

import string
print(string.ascii_lowercase)

  


2、string.ascii_uppercase

返回字符串大写的字母’ABCDEFGHIJKLMNOPQRSTUVWXYZ’

import string
print(string.ascii_uppercase)

  


3、string.ascii_letters

返回小写的a~z加上大写的A~Z组成的字符串,即string.ascii_lowercase连接string.ascii_uppercase组成的字符串

import string
print(string.ascii_letters)

  


4、string.digits

数字0到9的字符串:’0123456789’

import string
print(string.digits)

  


5、string.hexdigits

返回字符串’0123456789abcdefABCDEF’,即十六进制的所有字符(英文字母加上大小写)组成的字符串

import string
print(string.hexdigits)

  


6、string.letters

string.letters在python2中返回的结果与string.ascii_letters一样,python3中取消了,

string.ascii_letters在python2、python3中都可以用

7、string.lowercase

string.lowercase在python2中返回字符串小写字母’abcdefghijklmnopqrstuvwxyz’,与string.ascii_lowercase一致,python3中取消了

string.ascii_lowercase在python2、python3中都可以用

8、string.uppercase

string.lowercase在python2中返回字符串大写的字母’ABCDEFGHIJKLMNOPQRSTUVWXYZ’,与string.ascii_uppercase一致,python3中取消了

string.ascii_uppercase在python2、python3中都可以用

9、string.octdigits

返回八进制的所有字符组成的字符串

import string
print(string.octdigits)

  


10、string.punctuation

返回所有标点字符

import string
print(string.punctuation)

  


输出结果

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

  


11、string.printable

返回所有的可打印的字符的字符串。包含数字、字母、标点符号和空格

import string
print(string.printable)

  


输出结果

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

  


分析:即string.digits加上string.ascii_letters加上string.punctuation组成的字符串

四、验证码练习

生成四位数字验证码

1、方法一

  
  import random
li=[str(i) for i in random.sample(range(0,10),4)]
print("".join(li))

  

2、方法二

  
  import random
li = []
for i in range(4):
li.append(str(random.randint(0,9)))
print("".join(li))

  

生成数字加字母的四位验证码

1、方法一

  import random
num_l = list(map(str,list(range(10)))) #获取以0-9字符串为元素的列表
del_l = list(range(91,97))
chr_l = [chr(i) if i not in del_l else ''for i in range(65,123)] #获取大小写的a-z的列表,去掉中间的6个特殊字符
num_l.extend(chr_l) #将字母和数字组合在一起
res_l = num_l
res_str = "".join(res_l).strip("") #去掉空字符元素
print("".join(random.sample(res_str,4)))

  

2、方法二

import string
import random
res_str = ("%s%s")%(string.ascii_letters,string.digits)
print("".join(random.sample(res_str,4)))

  

Python之路(第十三篇)time模块、random模块、string模块、验证码练习的更多相关文章

  1. Python之路(第二十三篇) 面向对象初级:静态属性、静态方法、类方法

    一.静态属性 静态属性相当于数据属性. 用@property语法糖装饰器将类的函数属性变成可以不用加括号直接的类似数据属性. 可以封装逻辑,让用户感觉是在调用一个普通的数据属性. 例子 class R ...

  2. Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...

  3. Python开发【第二十三篇】:持续更新中...

    Python开发[第二十三篇]:持续更新中...

  4. Python开发【第十三篇】:jQuery--无内容点击-不进去(一)

    Python开发[第十三篇]:jQuery--无内容点击-不进去(一)

  5. python之路第五篇之模块和加密算法(进阶篇:续)

    模块 Python中,如果要引用一些内置的函数,该怎么处理呢?在Python中有一个概念叫做模块(module) 简单地说,模块就是一个保存了Python代码的文件. 模块分类: 1)内置模块 2)自 ...

  6. Python之路(第十七篇)logging模块

    一.logging模块 (一).日志相关概念 日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变 ...

  7. Python开发【第十三篇】:jQuery(二)

    http://www.bubuko.com/infodetail-1438296.html 处理完毕需要整理贴进来 Python之路[第十三篇]jQuery案例-Form表单&插件及扩展   ...

  8. Python之路【第一篇】python基础

    一.python开发 1.开发: 1)高级语言:python .Java .PHP. C#  Go ruby  c++  ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...

  9. Python之路【第九篇】:面向对象进阶

    阅读目录 一. isinstance(obj,cls)和issubclass(sub,super)二. 反射三. __setattr__,__delattr__,__getattr__四. 二次加工标 ...

随机推荐

  1. KMP与AC自动机模板

    HDU 1711 Number Sequence(KMP模板题) http://acm.hdu.edu.cn/showproblem.php?pid=1711 #include<bits/std ...

  2. CRTD异常案例及原因

     错误案例: SELECT DEMANDLINEID,SUPPLYORDERID,DEMANDORDERID,QTYALLOCATED,ITEM, A.* FROM ABPPMGR.SUPPLYDMD ...

  3. web 浏览器窗口

    1.窗口位置: 取得浏览器窗口左边和上边距屏幕左边和上边的位置 var leftPos = (typeof window.screenLeft == "number")? wind ...

  4. JMeter一次简单的接口测试(转载)

    转载自 http://www.cnblogs.com/yangxia-test 本次接口测试:根据ws查询所有商品的具体的信息.检查商品是否返回成功. 1.  准备测试数据 查询数据库中产品表已上架商 ...

  5. linux 升级python2.7

    linux为centos6,系统默认安装了python2.6,需要执行的python脚本内容包含标准库之xml.etree.ElementTree  用到库里的一个iter方法是python2.7的新 ...

  6. oracle中case...when的用法

    全表的内容 case...when可以解决在显示的时候想显示别的名称的例子, 用的最多的地方就是性别, 比如上面的表中的性别是由'1'和'0'表示的, 但是实际显示出来在页面上给客户看是不可取的, 这 ...

  7. Nginx 到底可以做什么

    本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得,欢迎留言交流. Nginx能做什么 反向 ...

  8. 侯捷STL课程及源码剖析学习1

    1.C++标准库和STL C++标准库以header files形式呈现: C++标准库的header files不带后缀名(.h),例如#include <vector> 新式C hea ...

  9. HDU 6081 度度熊的王国战略(全局最小割堆优化)

    Problem Description度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族.哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士.所以这一场战争,将会十分艰难.为了更好的进攻 ...

  10. 【校招面试 之 C/C++】第14题 C++ 内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区(堆栈的区别)

    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区.里面的变量通常是局部变量.函数参数等.在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用.和堆一样 ...