模块:就是一个.py 文件,函数只能在一个.py文件里用。
分为:内置模块, 内置再pycharm里
第三方模块,别人开发好的,
自定义模块,自己写的,包含模块调用,包的调用
time模块
用字符串表示时间,‘2017-06-21’是人能够识别的,而计算机则不行,需要转换才行
1.时间戳import timeprint(time.time()) 结果 1498022736.3174474 是从1970年到当前时间的总秒数时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
2.结构化时间表示
import time
print(time.localtime()) #以北京东八区时间为准
--time.struct_time(tm_year=2017, tm_mon=6, tm_mday=21, tm_hour=13, tm_min=30, tm_sec=3, tm_wday=2, tm_yday=172, tm_isdst=0)
import time
print(time.gmtime()) #世界标准时间
4.将结构化时间转化为时间戳 mktime
import timeprint(time.mktime(time.localtime())) 结果 1498023470.0将当地的总时间,计算成总秒数 5.结构化时间 转为 字符串时间import timeprint(time.strftime(‘%Y-%m-%d‘,time.localtime())) 结果 2017-06-21 6.字符串时间 转为 结构化时间
import timeprint(time.strptime(‘1990-02-01‘,‘%Y-%m-%d‘))结果time.struct_time(tm_year=1990, tm_mon=2, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=32, tm_isdst=-1)
时间戳是计算机能够识别的 ,以 float的形式存在结构化时间是以元组的形式操作时间,时间字符串是人能够看懂的
7. asctime 结构化时间(locattime) 转为 字符串时间 ,不需要提供格式,asctime本身有固定的格式import timeprint(time.asctime()) 结果 Wed Jun 21 13:54:56 20178.
time.sleep(3) #等待3秒,再执行打印,就是i/o阻塞print(‘ok‘)
=============================================random 随机模块
1.random ,生成0--1的随机浮点型数字import randomprint(random.random()) 结果 0.9535195458063495 ,每次产生都不一样 2.randint 在范围内随机产生的整形数字import randomprint(random.randint(1,5)) 结果 随机产出1--5之间的整形数字,包含5在内 3.import randomprint(random.randrange(1,5)) #与randint相同,但取不到尾部数字 4.import randomprint(random.choice([1,5,3,‘a‘])) #在列表随机取一个数字 5.import randomprint(random.sample([1,5,3,‘a‘],2)) #在列表内可以指定随机取出几个 结果 随机产生[‘a‘, 3]
6.import randomprint(random.uniform(1,3)) #取范围内的float型, 7.
l=[11,22,33,44]random.shuffle(l) #把之前的列表内元素顺序打乱print(l) 结构[22, 11, 44, 33]
----------------------------------
chr 是ASCII表中数字 与 字母 的对应关系
ord 是ASCII表中字母 与数字 的对应关系
利用random模块随机验证码
import randomdef valdate_code(): ret=‘‘ for i in range(5): num=random.randint(0,9) alfa=chr(random.randint(97,122)) alfa1=chr(random.randint(65,90)) s=random.choice([str(num),alfa,alfa1]) ret=ret+s return retprint(valdate_code()) ---结果 是随机产生的 Mau8N =======================
hashlib是个专门提供hash算法的库,其支持openssl 库提供的所有算法,包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。md5经常用来做用户密码的存储。而sha1则经常用作数字签名。
1)MD5码
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)。128位长度。目前MD5是一种不可逆算法。
具有很高的安全性。它对应任何字符串都可以加密成一段唯一的固定长度的代码。
用途:
根据这种唯一性,可以计算两个文件MD5码,判断两个文件是否相同;
md5 = hashlib.md5()md5.update(b‘gyh‘) print(md5.hexdigest()) # 16进制的方式加密结果 d6f793b3106b2d35dbb8230265753f13 A 给 B 发送数据,A把 计算数据的md5 ,发送过去 “gyh” ,B为了确定是否被改动,就计算MD5码来验证,与A的md5来比较是否一样,一样就是没有改动,否则就是改动。hashlib提供的是不可逆的算法,在数据库里存放的是16进制的加密暗文,当发送时就是明文发送,对方再校验是否被篡改。
如果数据大, 就分多次updatemd5 = hashlib.md5()md5.update(b‘gyh‘)md5.update(b‘adfdfdfdfd‘)print(md5.hexdigest())结果f2e59391c71431de1286a5d11ba7e60e MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。另一种常见的摘要算法是SHA1,调用SHA1和调用MD5完全类似:sha1 = hashlib.sha1()sha1.update(b‘gyh‘)sha1.update(b‘adfdfdfdfd‘)print(sha1.hexdigest())
结果 fc371385bfe232771168cd6406b3458474901e6c SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。比SHA1更安全的算法是SHA256和SHA512,不过越安全的算法越慢,而且摘要长度更长。
=============================os模块 是与操作系统提供一个接口操作系统是向下管理硬件,向上提供接口
import osprint(os.getcwd()) #获取当前的工作目录结果 C:\Users\lenovo\PycharmProjects\untitled\6.21
import osprint(os.mkdir(r‘C:\Users\lenovo\PycharmProjects\untitled\6.20\d.txt‘))结果,该目录下生成新的 d.txt 文件
import osprint(os.makedirs(r‘C:\Users\lenovo\PycharmProjects\untitled\6.20\p\k‘))结果 生成 p 目录下的 k 目录
import osprint(os.rename(r‘C:\Users\lenovo\PycharmProjects\untitled\6.21\c.txt‘,‘b.txt‘))
#把目录下的c.txt改成b.txt
import osprint(os.stat(r‘C:\Users\lenovo\PycharmProjects\untitled\6.21\/b.txt‘)) #查看文件的所有信息
结果os.stat_result(st_mode=16895, st_ino=6473924464490971, st_dev=2833053575, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1498030015, st_mtime=1498030015, st_ctime=1498030015)
st_atime 最后一次访问文件的时间 st_mtime 文件的修改时间 st_ctime 创建文件的时间
import osprint(os.path.abspath(r‘C:\Users\lenovo\PycharmProjects\untitled\6.21‘))
结果 文件的绝对路径C:\Users\lenovo\PycharmProjects\untitled\6.21
import osprint(os.path.split(r‘C:\Users\lenovo\PycharmProjects\untitled\6.21‘))
结果 ,把path分割成目录和文件名(‘C:\\Users\\lenovo\\PycharmProjects\\untitled‘, ‘6.21‘)
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
import osprint(os.path.isabs(r‘C:\Users\lenovo\PycharmProjects\untitled\6.21‘))
结果 True 判断路径是否为绝对路径
import osprint(os.path.getsize(r‘C:\Users\lenovo\PycharmProjects\untitled\6.21\b.txt\1.txt‘))
结果 8 获取文件的大小,-----------------------
import osprint(os.path.getatime(r‘C:\Users\lenovo\PycharmProjects\untitled\6.21\b.txt\1.txt‘))获取文件最后存取时间 结果 1498032094.0046003 是时间戳的形式
import osprint(os.path.getmtime(r‘C:\
指向的文件或者目录的最后修改时间 结果 1498032094.006605723
import timeprint(time.localtime(1498032094.0046003)) #时间戳转为结构化时间结果 time.struct_time(tm_year=2017, tm_mon=6, tm_mday=21, tm_hour=16, tm_min=1, tm_sec=34, tm_wday=2, tm_yday=172, tm_isdst=0)print(time.strftime(‘%Y-%m-%d‘,time.localtime(1498032094.0046003))) 结果 2017-06-21 # 结构时间转为字符串时间------------------------------------