模块分为三部分:内置模块,第三方模块,自定义模块
time模块
print(time.time()) #时间戳,唯一表示时间 1498029319.0604074 s=time.localtime() #当前结构化时间对象,参数为时间戳,将时间戳转换为结构化时间 print(s) time.struct_time(tm_year=2017, tm_mon=6, tm_mday=21, tm_hour=15, tm_min=15, tm_sec=19, tm_wday=2, tm_yday=172, tm_isdst=0) s2=time.gmtime() #世界标准时间 UTC时间,同localtime print(s2) time.struct_time(tm_year=2017, tm_mon=6, tm_mday=21, tm_hour=7, tm_min=15, tm_sec=19, tm_wday=2, tm_yday=172, tm_isdst=0)
print(time.mktime(time.localtime()))#将结构化时间转化为时间戳的方法 1498029450.0 print(time.mktime(time.localtime()))#将结构化时间转化为时间戳的方法 #time.strftime(format,p_tuple) ret=time.strftime('%Y-%m-%d',time.localtime()) #将结构化时间转化为字符串 print(ret) 2017-06-21 ret2=time.strptime('1900-03-12','%Y-%m-%d') #将字符串时间转换为结构化时间 print(ret2) time.struct_time(tm_year=1900, tm_mon=3, tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=71, tm_isdst=-1)
print(time.asctime()) #将结构化时间转化为字符串时间默认当前时间 Wed Jun 21 15:34:03 2017 print(time.ctime()) #将时间戳转化为字符串时间默认当前时间 Wed Jun 21 15:34:03 2017 #time.sleep() #I/O阻塞,不占CPU
import random #print(rangdom.random()) #(0,1)float类型 #print(random.randint(1,3)) #[1,3]int类型 #print(random.randrange(1,3)) #[1,3)int类型 #print(random,choice([12,23,'hello'])) #列表中随机一项 #print(random.sample([12,23,'hello'],2)) #列表中随机指定数目项 #print(random.uniform(1,3)) #float类型 #shuflle #打乱次序 l=[11,22,33,44] random.shuffle(l) print(l) [33, 22, 11, 44]
#随机生成验证码 # def idencode(): # ret='' # for i in range(5): # num=str(random.randint(0,9)) # alpha=chr(random.randint(97,120)) # ALPHA=chr(random.randint(65,90)) # s=random.choice([num,alpha,ALPHA]) # ret=ret+s # return ret # print(idencode())
hashlib模块
摘要算法,通过一个函数把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示),目的是为了发现原始数据是否被更改过
import hashlib md5=hashlib.md5() a='I am xiao bai' a2=a.encode('utf-8') md5.update(a2) print(md5.hexdigest()) 7b1011fa0c9d90bae496012f40d96e5d
b='I am' b2=' xiao bai' c=b.encode('utf-8') c2=b2.encode('utf-8') md5.update(c) md5.update(c2) print(md5.hexdigest()) 7b1011fa0c9d90bae496012f40d96e5d
可以看到两次结果是一致的,摘要算法结果是可以累积的,当数据量很大时可以采用分块的形式来对数据进行计算。
公司为了安全通常都不会用明文的方式保存用户口令,而是存储用户口令的摘要。有些用户使用123456等简单口令,为了保证安全,公司可以采用加盐的方式对用户口令进行保护,只要Salt不被他人知道,就很难通过MD5反推用户明文口令
。如果多个用户采用了相同的口令如123456,可以通过把登录名作为Salt的一部分来计算MD5。
hashlib.md5(''salt'',encode(''utf-8'')
os模块
os.getcwd()获取当前工作目录,即当前python脚本的目录路径
os.chdir('dirname')改变当前脚本工作目录,相当于shell下cd
os.makedirs('dirname1/dirname2')可生成多层递归目录
os.removedirs('dirname1')若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推
os.mkdir('dirname')生成单级目录,相当于shell中mkdir dirname
os.rmdir('dirname')删除单极空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()删除一个文件
os.rename('oldname','newname')重命名文件/目录
os.stat('path/filename')获取文件/目录信息
os.path.abspath(path)返回path规范化的绝对路径
os.path.dirname(path)返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)返回path最后的文件名,如果path以/或结尾,就会返回空值
os.path.exists(path)如果path存在,返回True;如果path不存在,返回False
os.path.join(path1[,path2[,...]])将多个路径组合后返回第一个绝对路径之前的参数将被忽略
os.path.getatime(path)返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path)返回path的大小