DAY20 常用模块(三)

一.加密模块

  1.加密方式:

    1.有解密的加密方式

    2.无解密的加密方式,碰撞检查

      1.不同数据加密后的结果一定不一致

      2.相同数据的加密结果一定是一致

  2.hashlib模块

    1.基本使用

    cipher = hashlib.md5('需要加密的数据的二进制形式'.encode('utf-8'))

    print(cipher.hexdigest()) # 加密结果码

    2.加盐

    cipher = hashlib.md5()

    cipher.update('前盐'.encode('utf-8'))

    cipher.update('需要加密的数据'.encode('utf-8'))

    cipher.updata('后盐'.encode('utf-8))

    print(cipher.hexdigest()) # 加密结果码

    3.其他算法

    cipher = hashlib.sha3_256(b'')

    print(cipher.hexdigest())

    cipher = hashlib.sha3_512(b'')

    print(cipher.hexdigest())

  3.hmac模块

    # 必须加盐

    cipher = hmac.new('盐'.encode('utf-8'))

    cipher.updata('数据'.encode('utf-8'))

    print(cipher.hexdigest())

二.操作配置文件:configparser模块

  import configparser
  # 初始化配置文件的操作对象
  parser = configparser.ConfigParser()
  # 读
  parser.read('my.ini', encoding='utf-8')
  # 所有section
  print(parser.sections())
  # 某section下所有option
  print(parser.options('section_name'))
  # 某section下某option对应的值
  print(parser.get('section_name', 'option_name'))

  # 写
  parser.set('section_name', 'option_name', 'value')
  parser.write(open('my.ini', 'w'))

三.操作shell命令:subprocess模块

  import subprocess
  order = subprocess.Popen('终端命令', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  # order.stdout 流对象,order.stdout.read()来获取操作的信息字符串
  suc_res = order.stdout.read().decode('系统默认编码')
  err_res = order.stderr.read().decode('系统默认编码')

  # stdout:存放指令执行成功的信息管道 | stderr 存放指令执行失败的信息管道
  order = subprocess.run('终端命令', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  # order.stdout 是字符串信息,就是Popen下order.stdout.read()
  suc_res = order.stdout.decode('系统默认编码')
  err_res = order.stderr.decode('系统默认编码')

四.Excel读:xlrd模块

  import xlrd
  # 读取文件
  work_book = xlrd.open_workbook("机密数据.xlsx")
  # 获取所有所有表格名称
  print(work_book.sheet_names())
  # 选取一个表
  sheet = work_book.sheet_by_index(1)
  # 表格名称
  print(sheet.name)
  # 行数
  print(sheet.nrows)
  # 列数
  print(sheet.ncols)
  # 某行全部
  print(sheet.row(6))
  # 某列全部
  print(sheet.col(6))
  # 某行列区间
  print(sheet.row_slice(6, start_colx=0, end_colx=4))
  # 某列行区间
  print(sheet.col_slice(3, start_colx=3, end_colx=6))
  # 某行类型 | 值
  print(sheet.row_types(6), sheet.row_values(6))
  # 单元格
  print(sheet.cell(6,0).value) # 取值
  print(sheet.cell(6,0).ctype) # 取类型
  print(sheet.cell_value(6,0)) # 直接取值
  print(sheet.row(6)[0])
  # 时间格式转换
  print(xlrd.xldate_as_datetime(sheet.cell(6, 0).value, 0))

五.Excel写:xlwt模块

  import xlwt
  # 创建工作簿
  work = xlwt.Workbook()
  # 创建一个表
  sheet = work.add_sheet("员工信息数据")
  # 创建一个字体对象
  font = xlwt.Font()
  font.name = "Times New Roman" # 字体名称
  font.bold = True # 加粗
  font.italic = True # 斜体
  font.underline = True # 下划线
  # 创建一个样式对象
  style = xlwt.XFStyle()
  style.font = font
  keys = ['Owen', 'Zero', 'Egon', 'Liuxx', 'Yhh']
  # 写入标题
  for k in keys:
  sheet.write(0, keys.index(k), k, style)
  # 写入数据
  sheet.write(1, 0, 'cool', style)
  # 保存至文件
  work.save("test.xls")

六.xml模块

<?xml version="1.0"?>
<data>
    <country name="Liechtenstein">
        <rank updated="yes">2</rank>
        <year>2008</year>
        <gdppc>141100</gdppc>
        <neighbor name="Austria" direction="E"/>
        <neighbor name="Switzerland" direction="W"/>
    </country>
    <country name="Singapore">
        <rank updated="yes">5</rank>
        <year>2011</year>
        <gdppc>59900</gdppc>
        <neighbor name="Malaysia" direction="N"/>
    </country>
    <country name="Panama">
        <rank updated="yes">69</rank>
        <year>2011</year>
        <gdppc>13600</gdppc>
        <neighbor name="Costa Rica" direction="W"/>
        <neighbor name="Colombia" direction="E"/>
    </country>
</data>
View Code

  import xml.etree.ElementTree as ET
  # 读文件
  tree = ET.parse("xmltest.xml")
  # 根节点
  root_ele = tree.getroot()
  # 遍历下一级
  for ele in root_ele:
  print(ele)

  # 全文搜索指定名的子标签
  ele.iter("标签名")
  # 非全文查找满足条件的第一个子标签
  ele.find("标签名")
  # 非全文查找满足条件的所有子标签
  ele.findall("标签名")

  # 标签名
  ele.tag
  # 标签内容
  ele.text
  # 标签属性
  ele.attrib

  # 修改
  ele.tag = "新标签名"
  ele.text = "新文本"
  ele.set("属性名", "新属性值")

  # 删除
  sup_ele.remove(sub_ele)

  # 添加
  my_ele=ET.Element('myEle')
  my_ele.text = 'new_ele'
  my_ele.attrib = {'name': 'my_ele'}
  root.append(my_ele)

  # 重新写入硬盘
  tree.write("xmltest.xml")

原文地址:https://www.cnblogs.com/majingjie/p/10713248.html