Fork me on GitHub

模块补充---hashlib摘要算法---configparser配置文件-----logging日志--subprocess进程

模块补充

===hashlib摘要算法===:

      ===========================haslib  摘要算法=============================

MD5  --快  执行一次用永不会变
SHA1 -- 越长越快 SHA1256 SHA1512

# import hashlib
# md5_obj=hashlib.md5()
# f=open('file')
# md5_obj.update(f.read().encode('utf-8'))
# # md5_obj.update(bytes('苹果',encoding='utf-8'))
# print(md5_obj.hexdigest())

# ========================== 一次性  和 多次 update的结果是一样的

# bb8ef3016ffa0e007911eca69ffa28f4
# bb8ef3016ffa0e007911eca69ffa28f4

 ============= ====================================               1    检验文件的一致性 ============= ====================================

 查看文件大小 按此数读取
# import os
# filesize=os.path.getsize('file')
# print(filesize)
#
# while filesize>0:
#     readsize= 10 if filesize>10 else filesize
#     f.read(readsize)
#     filesize-=readsize
# ============================================================

 ============= ====================================             2     储存密文密码 ============= ====================================

md5 --单向的  只能摘要成一个密文,不能反解

md5 暴力破解--撞库

密码加密写入 ------------加盐处理

# import hashlib
# md5_obj=hashlib.md5(b'alex')  # 加盐处理 (可以用一定的规律加盐)
# md5_obj=hashlib.md5()  # 加盐处理 (可以用一定的规律加盐)
# md5_obj.update('opiunnhu'.encode('utf-8'))
# print(md5_obj.hexdigest())

 1 检测文件的一致性 (一致性  不需要加盐)

    文字文件:逐行读
    视频文件:按字节读

 2 储存密文密码

 

===logger--logging---日志===:

                               ===========================logging 模块=============================

import logging

logging 模块的写方法 # 可以根据级别 来控制输出内容

默认级别 warning
默认格式 CRITICAL:root:b

=================logging.basicConfig()----配置方法======================

只能 在文件或者终端 选择一个输出
logging.basicConfig(
level=logging.DEBUG, # 调节级别
format=('%(asctime)s--%(filename)s--%(lineno)s--%(levelname)s--%(message)s'),
filename='log.txt',
filemode='a'
)
logging.debug('a') # 2017-09-23 18:40:41,549--demo.py--12对应的行数()--DEBUG--a
logging.info('b')
logging.warning('b')
logging.error('b')
logging.critical('b')

========================logger 对象方法========================

# logger_obj=logging.getLogger() # logger 对象

# fh=logging.FileHandler('logger_file') # 文件输出对象
# sh=logging.StreamHandler() # 屏幕输出对象

# formatter=logging.Formatter('%(asctime)s--%(filename)s--%(lineno)s--%(levelname)s--%(message)s') # 格式对象

# fh.setFormatter(formatter) #设置文件输出的格式
# sh.setFormatter(formatter) #设置屏幕输出的格式

# logger_obj.addHandler(fh) # logger对象添加 文件输出
# logger_obj.addHandler(sh) # logger对象添加 屏幕输出

# logger_obj.setLevel(logging.DEBUG) # logger 对象设置 级别

# logger_obj.info('info')
# logger_obj.error('error') # 写入文件默认是追加模式

 

 

 

 

 

===cofigparser 配置文件===:

 

  configparser  -- python内置配置模块  ----配置文件 格式是 字典类型

# import configparser

#
# config = configparser.ConfigParser()

# config["DEFAULT"] = {'ServerAliveInterval': '45',
#                       'Compression': 'yes',
#                      'CompressionLevel': '9',
#                      'ForwardX11':'yes'
#                      }
# config['bitbucket.org'] = {'User':'hg'}

# config['topsecret.server.com'] = {'Host Port':'50022','ForwardX11':'no'}

# with open('example.ini', 'w') as configfile:

#    config.write(configfile)


#

config = configparser.ConfigParser()
config.read('example.ini')
print(config.sections())
print(config['DEFAULT']['Compression'])
for item in config['DEFAULT']:
    print(item)


1 . sections() -----查看所有的节

2 section 的options config[section][option]

3      config.set(name,'homepath',path)  设置节对应的option

4 add_section( par ) 添加一个节

import configparser
config=configparser.ConfigParser()
def set_config():
while True:

config.read('demo.ini') # config这里包含之前文件所有内容 ( 如果没读的话 config为空 )

name = input('>> name')
path=input('>> path')
if name=='q':break

config.set(name,'homepath',path) # 修改其中的某一项内容

with open('demo.ini','w') as configfile:
config.write(configfile) # 把修改的内容 和 之前的内容 一起写入

set_config()
config.read('demo.ini')
 

 


 

         ==================  subprocess模块   ===============
# import subprocess
# s=subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE)  # Popen类---开启一个子进程---放到PIPE里面
# print(s.stdout.read().decode('gbk')) # 主进程丛 PIPE里面拿文件
# # s.wait()

 

posted @ 2017-09-22 19:33  派对动物  阅读(255)  评论(0)    收藏  举报
Top