20 常用模塊 hashlib hmac:加密 xml xlrd xlwt:excel讀|寫 configparser subprocess
阿新 • • 發佈:2019-04-16
表格 所有 config val space 數據 rec star void
加密:
1.有解密的加密方式
2.無解密的加密方式:碰撞檢查 hashlib
-- 1)不同數據加密後的結果一定不一致
-- 2)相同數據的加密結果一定是一致的
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())
# 必須加鹽 cipher = hmac.new(‘鹽‘.encode(‘utf-8‘)) cipher.update(‘數據‘.encode(‘utf-8‘)) print(cipher.hexdigest())
# my.ini # 註釋:該配置文件中,值直接書寫,但有四種類型 # -- int float boolean str # section[server] # name:option | value:mysql name = mysql version = 20000 [client] name = owen adress = 192.168.11.174
from configparser import ConfigParser # 初始化配置文件的操作對象 parser = ConfigParser() # 讀 parser.read(‘my.ini‘, encoding=‘utf-8‘) # 大分類:section print(parser.sections()) # 某分類下的keys:option print(parser.options(‘server‘)) print(parser.options(‘client‘)) # for section in parser.sections(): # print(parser.options(section)) # 獲取某section下某option的具體值 # res = parser.get(‘server‘, ‘version‘) res = parser.getfloat(‘server‘, ‘version‘) print(res, type(res)) # 寫 parser.set(‘server‘, ‘version‘, ‘20000‘) # 寫到內存 parser.write(open(‘my.ini‘, ‘wt‘))ini配置文件操作模塊
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‘))
import subprocess # subprocess.run(‘dir‘, shell=True) order = subprocess.Popen(‘dir1‘, shell=True, # 存放指令執行成功的信息管道 stdout=subprocess.PIPE, # 存放指令執行失敗的信息管道 stderr=subprocess.PIPE ) print(order.stdout) # success_msg = order.stdout.read().decode(‘GBK‘) # print(success_msg) # error_msg = order.stderr.read().decode(‘GBK‘) # print(error_msg) # 實際項目中,會接著對success_msg加以分析處理 order = subprocess.run(‘dir‘, shell=True, # 存放指令執行成功的信息管道 stdout=subprocess.PIPE, # 存放指令執行失敗的信息管道 stderr=subprocess.PIPE ) print(order.stdout) # success_msg = order.stdout.decode(‘GBK‘) # print(success_msg) # error_msg = order.stderr.decode(‘GBK‘) # print(error_msg)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(‘系統默認編碼‘)
年終報表 教學部 市場部 咨詢部 總計 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))
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 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")
import json # json.dumps() json.dump() # json.loads() json.loads() # json:json就是一種特殊格式的字符串 # 格式要求: # 1.只能由{}和[]嵌套形成 # 2.只能有一個根: 最外層要麽是{}(推薦),要麽是[] # 3.所以key都是字符串類型,且json字符串中所有字符串類型必須用""包裹 # 4.json字符串中value類型可以為: number | boolean | null | 字符串 | dic | list dic = {‘‘: [1, 3.14, True, None, "字符串"]} print(json.dumps(dic)) j_str = """{"key": [1, 3.14, true, null, "字符串"]}""" print(json.loads(j_str)) ‘‘‘ { "info": [1, 2, 3, 4, 5] } ‘‘‘ # xml格式數據: # 1.xml文件中都是由自定義標簽嵌套形成,區分大小寫 # 2.只能有一個根標簽:其他內容或標簽都被該標簽包裹 # 3.標簽名為key,標簽中的值為value # 4.與json不同的是,xml標簽可以額外添加屬性來標識key的區分度xml | json
20 常用模塊 hashlib hmac:加密 xml xlrd xlwt:excel讀|寫 configparser subprocess