模块1 time,random,os ,hashlib

Posted 谷永辉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块1 time,random,os ,hashlib相关的知识,希望对你有一定的参考价值。

模块:就是一个.py 文件,函数只能在一个.py文件里用。

分为:内置模块,  内置再pycharm里

   第三方模块,别人开发好的,

   自定义模块,自己写的,包含模块调用,包的调用

time模块

用字符串表示时间,‘2017-06-21’是人能够识别的,而计算机则不行,需要转换才行

1.时间戳
import time
print(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 time
print(time.mktime(time.localtime())) 结果 1498023470.0
将当地的总时间,计算成总秒数

5.结构化时间 转为  字符串时间
import time
print(time.strftime(\'%Y-%m-%d\',time.localtime())) 结果  2017-06-21

6.字符串时间 转为  结构化时间
import time
print(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 time
print(time.asctime()) 结果 Wed Jun 21 13:54:56 2017
8.
time.sleep(3)   #等待3秒,再执行打印,就是i/o阻塞
print(\'ok\')
=============================================
random 随机模块
1.random  ,生成0--1的随机浮点型数字
import random
print(random.random()) 结果 0.9535195458063495 ,每次产生都不一样

2.randint 在范围内随机产生的整形数字
import random
print(random.randint(1,5)) 结果 随机产出1--5之间的整形数字,包含5在内

3.
import random
print(random.randrange(1,5)) #与randint相同,但取不到尾部数字

4.
import random
print(random.choice([1,5,3,\'a\'])) #在列表随机取一个数字


5.
import random
print(random.sample([1,5,3,\'a\'],2)) #在列表内可以指定随机取出几个  结果 随机产生[\'a\', 3]
6.
import random
print(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 random
def 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 ret
print(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进制的加密暗文,当发送时就是明文发送,对方再校验是否被篡改。

 


如果数据大, 就分多次update
md5 = 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 os
print(os.getcwd()) #获取当前的工作目录
结果 C:\\Users\\lenovo\\PycharmProjects\\untitled\\6.21

import os
print(os.mkdir(r\'C:\\Users\\lenovo\\PycharmProjects\\untitled\\6.20\\d.txt\'))
结果,该目录下生成新的 d.txt 文件

import os
print(os.makedirs(r\'C:\\Users\\lenovo\\PycharmProjects\\untitled\\6.20\\p\\k\'))
结果 生成 p 目录下的 k 目录

import os
print(os.rename(r\'C:\\Users\\lenovo\\PycharmProjects\\untitled\\6.21\\c.txt\',\'b.txt\'))
#把目录下的c.txt改成b.txt

import os
print(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 os
print(os.path.abspath(r\'C:\\Users\\lenovo\\PycharmProjects\\untitled\\6.21\'))
结果  文件的绝对路径C:\\Users\\lenovo\\PycharmProjects\\untitled\\6.21

import os
print(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 os
print(os.path.isabs(r\'C:\\Users\\lenovo\\PycharmProjects\\untitled\\6.21\'))
结果  True  判断路径是否为绝对路径


import os
print(os.path.getsize(r\'C:\\Users\\lenovo\\PycharmProjects\\untitled\\6.21\\b.txt\\1.txt\'))
结果  8   获取文件的大小,
-----------------------
import os
print(os.path.getatime(r\'C:\\Users\\lenovo\\PycharmProjects\\untitled\\6.21\\b.txt\\1.txt\'))
获取文件最后存取时间 结果 1498032094.0046003 是时间戳的形式
import os
print(os.path.getmtime(r\'C:\\
指向的文件或者目录的最后修改时间   结果  1498032094.006605723
 
 
import time
print(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 # 结构时间转为字符串时间

------------------------------------
 
 
 










以上是关于模块1 time,random,os ,hashlib的主要内容,如果未能解决你的问题,请参考以下文章

random模块time模块sys模块os模块

模块1 time,random,os ,hashlib

time模块random随机模块os模块进度条打印

time与datetime模块,random模块,os模块

Python 常用模块 -- collections模块,time模块,random模块,os模块,sys模块

time random sys os模块