python成长之路16——sys os hashlib random

一、sys

用于提供对Python解释器相关的操作:

1 import sys
2 sys.argv           命令行参数list,第一个元素是程序本身的路径
3 sys.version       获取python解释器的版本信息
4 sys.path           返回模块的搜索路径,即可导入模块和包的路径 
5 sys.platform     返回操作系统平台的名称
6 sys.stdin          输入相关       
7 sys.stdout        输出相关
8 sys.stderr         错误相关
9 sys.exit()          退出程序,正常退出:exit(0)
sys

二、os

用于提供系统级别的操作:

 1 import os
 2 
 3 print(os.getcwd())                  #pwd
 4 os.chdir("/Users/admin/stu179471/") #cd
 5 print(os.curdir)                    #返回当前目录:"."
 6 print(os.pardir)                    #返回上级目录:".."
 7 os.makedirs("c/d")                  #mkdir -p,可递归创建目录,如果目录存在会报错
 8 os.removedirs("../c/d")             #若d为空则删除d,再向上递归,若c也为空,则删除c,继续向上递归
 9 os.mkdir("e")                       #mkdir没有-p选项,只能创建单级目录
10 os.rmdir("e")                       #删除单级空目录,若目录不为空则无法删除,会报错
11 print(os.listdir("/Users/admin"))   #ls -a,返回值是个list
12 os.remove("../c/123")               #删除文件
13 os.rename("db","dbnew")             #重命名
14 print(os.stat("dbnew"))             #获取文件目录信息
15 print(os.sep)                       #操作系统特定的路径分隔符,win为"\\",unix为"/"
16 print(os.linesep)                   #操作系统特定的行终止符,win为"\t\n",unix为"\n"
17 print(os.pathsep)                   #用于分割文件路径的字符串
18 print(os.name)                      #当前使用平台,win为'nt',unix为'posix'
19 os.system('ls /Users')              #运行shell命令,执行结果直接显示,不需要返回执行结果的时候可以用
20 print(os.environ)                   #获取系统环境变量
21 print(__file__)
22 print(os.path.abspath(__file__))    #返回绝对路径
23 print(os.path.split(__file__))      #将文件分割成目录和文件名二元组返回
24 print(os.path.dirname(__file__))    #返回文件的目录
25 print(os.path.basename(__file__))   #返回文件的文件名
26 print(os.path.exists(__file__))     #判断文件是否存在
27 print(os.path.isabs(__file__))      #如果path是绝对路径,返回True
28 print(os.path.isfile(__file__))     #如果path是一个存在的文件,返回True
29 print(os.path.isdir(__file__))      #如果path是一个存在的目录,返回True
30 print(os.path.join(__file__,"b","c")) #以"/"为连接符进行拼接
31 print(os.path.getsize(__file__))    #得到文件的大小
32 print(os.path.getatime(__file__))   #得到文件的atime
33 print(os.path.getctime(__file__))   #得到文件的ctime
34 print(os.path.getmtime(__file__))   #得到文件的mtime
os

三、hashlib

用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

 1 import hashlib
 2 
 3 ######## md5 ########
 4 
 5 #MD5是最常见的摘要算法,速度很快,生成结果是一个32位的16进制字符串。
 6 md5=hashlib.md5()
 7 # md5.update(bytes('admin',encoding="utf-8"))
 8 md5.update('admin'.encode(encoding="utf8"))  #字符串必须是二进制或者被encoded
 9 print(md5.hexdigest()) #32位的16进制字符串
10 
11 ######## sha1 ########
12 
13 #SHA1的结果是一个40位的16进制字符串。
14 sha1=hashlib.sha1()
15 sha1.update("admin".encode(encoding="utf8"))
16 print(sha1.hexdigest())
17 
18 ######## sha256 ########
19 
20 #SHA256的结果是用一个64位的16进制字符串。
21 sha256=hashlib.sha256()
22 sha256.update(bytes("admin",encoding="utf8"))
23 print(sha256.hexdigest())
24 
25 ######## sha384 ########
26 
27 #SHA384的结果是用一个97位的16进制字符串。
28 sha384=hashlib.sha384()
29 sha384.update(bytes("admin",encoding="utf8"))
30 print(sha384.hexdigest())
31 
32 ######## sha512 ########
33 
34 #SHA512的结果是用一个130位的16进制字符串。
35 sha512=hashlib.sha512()
36 sha512.update(bytes("admin",encoding="utf8"))
37 print(sha512.hexdigest())
hashlib

以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。

 1 import hashlib
 2 
 3 ######## md5 ########
 4 md5=hashlib.md5()
 5 md5.update('admin'.encode(encoding="utf8"))
 6 print(md5.hexdigest())
 7 
 8 #对MD5添加自定义key,再来做加密
 9 md5=hashlib.md5(bytes("19she72hR3",encoding="utf8"))
10 md5.update('admin'.encode(encoding="utf8"))
11 print(md5.hexdigest())
12 
13 执行结果:
14 21232f297a57a5a743894a0e4a801fc3
15 419088063ed2326fc9e194d01565aad3
添加自定义key

python内置还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密

1 import hmac
2 
3 h=hmac.new(bytes("2j83n2dusiye72",encoding="utf8"))
4 h.update(bytes('admin',encoding="utf8"))
5 print(h.hexdigest())
6 
7 执行结果:
8 fabd519a5af1533a76126129ad710ab5
hmac

四、random

import random

print(random.random())          #生成0~1之间的随机数,16位小数
print(random.randint(1,10))     #生成给定范围内随机数,整数  1<=a<=10
print(random.randrange(1,10))   #生成给定范围内随机数,整数  1<=a<10

#生成随机验证码
checkcode=''
for i in range(4):
    cur=random.randrange(0,4)
    if cur == i:
        temp=chr(random.randint(65,90))
    else:
        temp=str(random.randint(0,9))
    checkcode += temp
print(checkcode)

执行结果:
0.9956692186565768
10
4
1Z6U
生成随机数

 

posted @ 2017-03-10 19:29  meitangyanyan  阅读(220)  评论(0编辑  收藏  举报