python3學習筆記 常用庫操作 sys實戰 hashlib實戰 檔案操作
阿新 • • 發佈:2021-11-29
檔案操作
一般情況下,我們對檔案操作完成以後,需要及時的關閉,但是使用with上下文的方法,程式會在內部自動關閉,我們只需要專注於檔案的操作就行
檔案操作一般有三種方法 w(讀) r(寫) a(把檔案原來的內容追加一遍)
單行寫入:用write
with open("log.txt","w") as a :
a.write("hello world")
輸出結果:
log.txt
hello world
多行寫入:使用wirtelines
with open("log.txt","w") as d: d.writelines(''' jahcjlahl anlal aklna akln''')
檔案的讀取,檔案的讀取,要打印出來
# with open("log.txt","r") as r: # 讀取檔案的所有內容 只能讀取一遍 假如第二次讀取或為空 # print(r.read()) # 讀取檔案的第一行內容 readline() # print(r.readline()) # 按行讀取檔案readlines() # print(r.readlines())
檔案內容的追加 用a
with open("log.txt","w") as a : a.write("hello world")
sys實戰
sys的使用往往時伴隨著路徑。進行sys操作前應該先匯入sys 和os庫
在工作中寫程式碼的時候,當我們匯入方式正確,但是卻提示找不到模組時。我們就可以使用sys來解決
解決思路為:
1.找到sys的路徑,找到提示模組的路徑
2.將模組的路徑拼接到一起
3.新增到sys.path裡面
4.將模組的所有內容匯入進來
5.呼叫函式
import sys
import os
# 獲取當前路徑的上一級 base_dir=os.path .dirname(os.path.dirname(__file__)) print(base_dir) # 將day12的路徑和sys的路徑拼接 day12Path=os.path.join(base_dir,"day12") print(day12Path) # 新增到sys.path裡面 sys.path.append(day12Path)
將模組的所有內容全部匯入
from login import * func()
輸出結果:
D:\code\practice
D:\code\practice\day13
hello world
hashilib實戰
主要應用於open api的加密 一般使用時間戳使得到的結果每次都不一樣
操作前匯入
hashilib庫
parse庫中的urllib
time庫
open api的加密思路:
1、對請求引數進行排序,根據key來進行排序
2、把請求引數處理成key=value&key=value
3、對請求引數進行md5的加密(加密的資料型別必須是bytes的資料型別)
4. 把加密後的sign當作請求頭給服務端傳送過去,
服務層進行比較,如果一致,可以請求,如果不一致拒絕請求
import hashlib from urllib import parse import time def sign(): # 對請求引數進行排序根據key來進行排序 dict1={"name:":"wuya","age":28,"address":"xian","time":time.time()} data=dict(sorted(dict1.items(),key=lambda item:item[0])) data=parse.urlencode(data) m=hashlib.md5() m.update(data.encode("utf-8")) return m.hexdigest() print(sign())
輸出結果:
2f414f60abd347f48e7dd083a64b6e2c 每次都不一樣
異常處理:程式在執行的過程中,都會存在異常的情況,和設計測試用例
的思想一樣,需要考慮被測功能點的正常功能點和異常功能點
try:
expect:
else:
finally
執行順序:
1、如果try執行正常,程式碼就執行到else的邏輯,再執行finally
2、如果try執行異常,程式碼就執行到expect的邏輯,再執行finally
3.一般使用Exception,它能夠捕獲幾乎所有的程式錯誤資訊
4.finally總是能被執行到
一般在寫程式的時候 都需要考慮到異常處理
def func(a,b): try: print(a/b) except Exception as e: print(e.args) else: print("try執行正確我才能被執行到") finally: print("不管是否執行try") func(4,2) func(1,0)
輸出結果:
2.0 try執行正確我才能被執行到 不管是否執行try ('division by zero',) 不管是否執行try
面向物件:
面向物件:
1、類的定義使用的關鍵字是class
2、類的首字母必須是大寫
3、目前學習的類都是新式類
4、所有類的基類(祖先)都是object,因此都是需要來繼承的
5、面向物件的三大特性:
封裝
繼承
多型
6,在OOP的程式設計中,如果要呼叫裡面的方法,首先需要對類進行例項化,例項化後的物件可以呼叫類中的方法
class Person(object): def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def show(self): print("my name is {0},my age is {1},my sex is {2}".format(self.name,self.age,self.sex)) # def show(self): # print("hello class") # 對類進行例項化的一個過程,它的物件是obj obj=Person(name="wuya",age=28,sex="nan") obj.show()