1. 程式人生 > 其它 >python3學習筆記 常用庫操作 sys實戰 hashlib實戰 檔案操作

python3學習筆記 常用庫操作 sys實戰 hashlib實戰 檔案操作

檔案操作

一般情況下,我們對檔案操作完成以後,需要及時的關閉,但是使用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()