博客园

3、hashlib&subprocess&configparserh和os

💣💣💣💣💣 hashlib算法和加密 💣💣💣💣💣

hash算法:传入一段内容会得到一段hash值,hash有三大特点

1、如果只传入的内容和采用的算法一样,那么得到的hash值一定是一样的
2、只要采用的算法是固定的,hash的长度就固定,和内容大小无关
3、hash值不可逆,不能通过hash反解出内容是什么
1+2————>可校验文件的完整性,接受到的hash值和自下载后算得的hash值一样,就说完整的
1+3---->加密文件或账户等

小例子

import hashlib
m = hashlib.md5()
m.update('你好'.encode('utf-8))
print(m.hexdigest())>>>>>> 43b2fa0da902a2d9175fb4d4b858e5d5

with open(r'a.txt',mode = 'rb')as f:
for line in f:
m.update(line)
res = m.hexdigest()
print(res)

💣💣hash进阶版验证文件,分段验证,针对大文件💣💣

import os
import sys
import hashlib
def check_large_file_md5()
if sys.argv[1]:
if os.path.exists(sys.argv[1]):
m = hashlib.md5()
with open(sys.argv[1],mode='rb')as f:
for i in range(4):
m.update(f.read(200))
f.seek(1024000000,1)
print(m.hexdigest())
else:
print('路径错误’)
else:
print('参数错误')
if___name__=="main:
check_large_file_md5()

💣💣💣💣💣 subprocess管道💣💣💣💣💣

import subprocess
import time

obj = subprocess.Popen("tasfklist",
shell=True,
stdout=subprocess.PIPE, 正确时会运行
stderr=subprocess.PIPE tasklist正确时不返回
)

print("=============>", obj)

stdout_res = obj.stdout.read()
stderr_res = obj.stderr.read()

print(stdout_res.decode('gbk')) windows系统需要解码gbk格式
print(stderr_res.decode('gbk'))

os路径处理

推荐使用
import os
具体应用
import os,sys
possible_topdir = os.path.normpath(os.path.join(
os.path.abspath(file),
os.pardir, #上一级
os.pardir,
os.pardir
))
sys.path.insert(0,possible_topdir)

configparser模块

注释1

; 注释2

[section1]
k1 = v1
k2:v2
user=egon
age=18
is_admin=true
salary=31
[section2]
k1 = v1
代码
import configparser

config=configparser.ConfigParser()
config.read('a.cfg')

查看所有的标题

res=config.sections() #['section1', 'section2']
print(res)

查看标题section1下所有key=value的key

options=config.options('section1')
print(options) #['k1', 'k2', 'user', 'age', 'is_admin', 'salary']

查看标题section1下所有key=value的(key,value)格式

item_list=config.items('section1')
print(item_list) #[('k1', 'v1'), ('k2', 'v2'), ('user', 'egon'), ('age', '18'), ('is_admin', 'true'), ('salary', '31')]

查看标题section1下user的值=>字符串格式

val=config.get('section1','user')
print(val) #egon

查看标题section1下age的值=>整数格式

val1=config.getint('section1','age')
print(val1) #18

查看标题section1下is_admin的值=>布尔值格式

val2=config.getboolean('section1','is_admin')
print(val2) #True

查看标题section1下salary的值=>浮点型格式

val3=config.getfloat('section1','salary')
print(val3) #31.0

posted @ 2021-01-08 16:05  小刘学python  阅读(107)  评论(0)    收藏  举报