zoukankan      html  css  js  c++  java
  • hashlib、hmac、subprocess、configparser模块

    hashlib模块:加密

    import hashlib
    # 基本使用
    cipher = hashlib.md5('需要加密的数据的二进制形式'.encode('utf-8'))
    print(cipher.hexdigest())  # 加密结果码

    # 加盐
    cipher = hashlib.md5()
    cipher.update('前盐'.encode('utf-8'))
    cipher.update('需要加密的数据'.encode('utf-8'))
    cipher.update('后盐'.encode('utf-8'))
    print(cipher.hexdigest())  # 加密结果码

    # 其他算法
    cipher = hashlib.sha3_256(b'')
    print(cipher.hexdigest())
    cipher = hashlib.sha3_512(b'')
    print(cipher.hexdigest())

     

    hmac模块:加密

    # 必须加盐
    cipher = hmac.new('盐'.encode('utf-8'))
    cipher.update('数据'.encode('utf-8'))
    print(cipher.hexdigest())

     

    configparser模块:操作配置文件

    # my.ini
    # 注释:该配置文件中,值直接书写,但有四种类型
    #       -- int float boolean str
    # section
    [server]
    # name:option | value:mysql
    name = mysql
    version = 20000

    [client]
    name = owen
    adress = 192.168.11.174
    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'))

     

    subprocess模块:操作shell命令

    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('系统默认编码')

     

    xlrd模块:excel读

                年终报表                
    教学部 市场部 咨询部 总计
    Jan-19 10 15 5 30
    Feb-19 10 15 5 30
    Mar-19 10 15 5 30
    Apr-19 10 15 5 30
    May-19 10 15 5 30
    Jun-19 10 15 5 30
    Jul-19 10 15 5 30
    Aug-19 10 15 5 30
    Sep-19 10 15 5 30
    Oct-19 10 15 5 30
    Nov-19 10 15 5 30
    Dec-19 10 15 5 30
    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))

     

    xlwt模块:excel写

    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>
    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")

     

  • 相关阅读:
    内存-程序运行的空间
    数据在内存中是这样存储的(二进制形式存储)
    从编写源代码到程序在内存中运行的全过程解析
    QT开发工具
    Linux中Too many open files 问题分析和解决
    TCP端口状态说明ESTABLISHED、TIME_WAIT
    HttpClient当HTTP连接的时候出现大量CLOSE_WAIT连接
    缓存穿透、击穿、雪崩
    Http长连接和Keep-Alive以及Tcp的Keepalive
    防止表单重复提交
  • 原文地址:https://www.cnblogs.com/maoruqiang/p/10723578.html
Copyright © 2011-2022 走看看