97在线观看播放-无码人妻久久一区二区三区不卡-免费大片黄在线观看-无码少妇一区二区三区芒果-美女不带套日出白浆免费视频-精品国偷自产在线

客服熱線:13033933971

Python----異常處理、斷言和路徑處理,簡單、清晰版

2023-02-28 18:54 瀏覽:5 來源:鍋爐之家   
核心摘要:1.路徑處理1.找模塊:sys.pathimport sysprint(sys.path)教程在這里(https://jq.qq.com/?_wv=1027k=1pYeU9or)- 1.理解- 1.是python去查找包或模塊- 2.項目開始根目錄,python內(nèi)置的目錄- 3.雖然說python的安裝目錄下也可以存放我們寫的模塊,但是不建議(太多了,不大好找)- 4.如果以后你發(fā)現(xiàn)模塊導(dǎo)入不了了 ,可以使用

1.路徑處理

1.找模塊:sys.path

import sys print(sys.path)

教程在這里(https://jq.qq.com/?_wv=1027&k=1pYeU9or)


- 1.理解

- 1.是python去查找包或模塊 - 2.項目開始根目錄,python內(nèi)置的目錄 - 3.雖然說python的安裝目錄下也可以存放我們寫的模塊,但是不建議(太多了,不大好找) - 4.如果以后你發(fā)現(xiàn)模塊導(dǎo)入不了了 ,可以使用下sys.path - 5.返回的是一個數(shù)組 - 6.用的時候需要導(dǎo)入sys:import sys - python的目錄,主要放外部的庫,或者第三方的模塊

- 2.兩種導(dǎo)包的方法再去找

- 1.from..module ...import 方法、變量等 - from python_basic.class10_路徑.pac01.module_012 import a print(a) print(sys.path) - 2.from pac ... import module - from python_basic.class10_路徑.pac01 import module_012 print(module_012.a) print(sys.path)



2.獲取文件的路徑


  • 1.獲取絕對路徑os.path.abspath(file)


- import os # 獲取絕對路徑 # 固定的寫法 # file 表示運行的文件的名稱 abs_path=os.path.abspath(file) print(abs_path) import os # 當(dāng)前文件的絕對路徑 abs_path=os.path.abspath(__file__) print(abs_path)

- 2.獲取文件的目錄路徑

- 1.os.path.dirname(file) - 不建議用 # 獲取文件的目錄 dir_name = os.path.dirname(__file__) print(dir_name)



- 2.os.path.dirname(abs_path)
- 建議用

- dir_name1 =os.path.dirname(file) dir_name =os.path.dirname(abs_path) abs_path =os.path.abspath(__file__) dir_name =os.path.dirname(abs_path) print(dir_name)

- 3.應(yīng)用場景


  • 例子:假設(shè)若需要打開另外一個包pac01下的demo.txt
  • 1.思路
    • 1.獲取當(dāng)前文件的絕對路徑

abs_path=os.path.abspath(file)


    • 2.獲取當(dāng)前文件的目錄路徑

dir_name =os.path.dirname(abs_path)


    • 3.當(dāng)前文件的目錄路徑和pac01進行拼接
      • 1.推薦方法

txt_file_path=os.path.join(dir_name,“pac01”,“demo.txt”)nPS一般來說,是通過某個文件去獲取項目的跟路徑





abs_path = os.path.abspath(__file__) dir_name =os.path.dirname(abs_path) txt_file_path=os.path.join(dir_name,"pac01","demo006.txt") with open(txt_file_path,encoding="utf-8") as f: print(f.readlines())



- 2.其他方法:不建議用

print(dir_name+'/pac01/demo.txt') # print(dir_name+r'pac01demo.txt') - 這種寫法不建議,因為不同的系統(tǒng),windows一般是,mac是/,改來改去麻煩 - 4.打開文件并讀取 - with open(txt_file_path,encoding="utf8") as f: print(f.read())


  • PS:獲取文件路徑時,路徑或文件不一定要真實存在,了解這即可


3.工作目錄


  • 1.os.getcwd():獲取當(dāng)前的工作目錄
    • 1.你在哪個目錄下運行python程序,輸出的是哪個路徑



print(os.getcwd())




  • 2.os.chdir():切換工作目錄
  • 3.os.mkdir(“test_dir”)

創(chuàng)建工作目錄nos.mkdir(“test_dir”)


  • 4.os.rmdir()

刪除工作目錄nos.rmdir(“test_dir”)


  • 5.listdir()
    • 獲取當(dāng)前路徑下的目錄列表,返回列表格式數(shù)據(jù)




print(os.listdir())




  • 6.os.path.isfile()
    • 判斷當(dāng)前文件是否是文件,返回布爾值


  • 7.os.path.isdir
    • 判斷當(dāng)前文件是否是目錄,返回布爾值



print(os.path.isfile(__file__)) print(os.path.isdir(__file__))



2.異常處理

1.異常理解


  • 1.程序如果遇到異常,不會再執(zhí)行
  • 2.寫代碼的人不能讓程序遇到異常就終止運行
    • 1.捕獲他catch
      • 改變程序遇到異常的行為,異常處理,希望程序不要終止,按照我說的辦,叫做異常的捕獲


    • 2.拋出他raise



2.異常處理


  • 1.異常的捕獲
    • 1.基本的寫法:



try:

你要執(zhí)行的可能發(fā)生異常的代碼

except:

程序發(fā)生異常后,你希望程序做的事情n- 1.程序先執(zhí)行try 當(dāng)中的代碼 - 2.但是一旦try當(dāng)中某個代碼報錯,會執(zhí)行跳到except,try剩下的代碼不會執(zhí)行 - 3.例子: - 1.except捕獲了ntry: print("正在運行代碼") a = 1 / 0 print(f"計算結(jié)果:{a}") except: print("1不能除0,你需要改除數(shù)") print("其他的程序")

輸出的結(jié)果是:





“”"
- 2.異常類型的捕獲 - 1.沒有捕獲該類型的情況 - # try:

try: print("正在運行代碼") a=1/0 print(f"計算結(jié)果:{a}") except IndexError: print("1不能除0,你需要改除數(shù)") print("其他的程序") # 只會打印 正在運行代碼,因為報錯了,無法捕獲ZeroDivisionError異常,



- 2.捕獲到該類型的錯誤

try: print("正在運行代碼") a=1/0 print(f"計算結(jié)果:{a}") except ZeroDivisionError: print("1不能除0,你需要改除數(shù)") print("其他的程序")

輸出的結(jié)果是:




  • 3.打印異常信息Exception(或某種類型的報錯) as e
    - 1.單個異常的 - # 打印異常信息,一般用此方法


try: print("正在運行代碼") a=1/0 print(f"計算結(jié)果:{a}") except ZeroDivisionError as e: print(e) print("其他的程序")

輸出的結(jié)果是:




- 2.多個異常的

try: lst = ['yz', 'addd'] lst[3] a=1/0 except ZeroDivisionError as err: print(err) print("hello word") # IndexError: list index out of rangen- # 捕獲多個時

方法1:

try: {"name":"zhangsan","age":18}['name1'] lst = ['yz', 'addd'] lst[3] a=1/0 except (ZeroDivisionError,IndexError,KeyError) as err: print(err) print("hello word")

打印的結(jié)果:


方法2

try: a = 1 / 0 {"name":"zhangsan","age":18}['name1'] lst = ['yz', 'addd'] lst[3] except ZeroDivisionError as err: print(err) print("ZeroDivisionError") # 抓到這個異常 # division by zero # ZeroDivisionError except IndexError: print("IndexError") # 抓到這個異常 IndexError except KeyError: print("KeyError") # 抓到這個異常 KeyError

打印的結(jié)果:


- 具體用哪個,根據(jù)實際情況來


  • 2.try…finally
    • 1.finally后的代碼無論正常與否,都會執(zhí)行
      • 1.正常的




try: 1/1 print("正常執(zhí)行的代碼") except ZeroDivisionError as e: print("不能除以0") finally: print("無論正常與否,都會執(zhí)行的代碼")

打印的結(jié)果:




- 2.異常的

try: 1/0 print("正常執(zhí)行的代碼") except ZeroDivisionError as e: print("不能除以0") finally: print("無論正常與否,都會執(zhí)行的代碼")

打印的結(jié)果:


- 2.常見應(yīng)用在打開文件后,**關(guān)閉文件** - # 假設(shè)demo.py被打開了

import io try: f=open("demo.py",'a') f.read() except io.UnsupportedOperation as e: print("文件讀取失敗") print(e) finally: f.close() """

打印結(jié)果:

文件讀取失敗

not readablen“”"


  • 2.異常的拋出
    • 例子1:



def adult_add(a,b): """兩個大于等于18的數(shù)相加;小于18的不能相加""" if (a<18) or (b<18): raise ValueError("參數(shù)必須大于或等于18") c=a+b return c adult_add(18,19) adult_add(3,4) #ValueError: 參數(shù)必須大于或等于18 print("函數(shù)執(zhí)行完畢") """



打印結(jié)果:

File ".../demo03_raise.py", line 13, in adult_add raise ValueError("參數(shù)必須大于或等于18") ValueError: 參數(shù)必須大于或等于18 """


  • 2.基于上個例子調(diào)用:


- try: adult_add(3, 4) # ValueError: 參數(shù)必須大于或等于18 except: print("函數(shù)執(zhí)行完畢") # 打印結(jié)果:函數(shù)執(zhí)行完畢


  • 3.可用于斷言的場景


3.斷言

1.理解

- 1.assert后面跟一個條件語句,條件不成立就觸發(fā)條件異常 - 2.語法:assert 條件表達式 ### 3.例子 - height=int(input("請輸入身高:")) assert height>180 # 斷言為真時:請輸入身高:181 """ 斷言為假時:請輸入身高:180 Traceback (most recent call last): File ".../demo04_assert.py", line 9, in assert height>180 AssertionError """

最后

今天這篇文章到這里就結(jié)束了,喜歡的小伙伴記得點贊收藏。關(guān)于這篇文章有不懂的地方記得隨時提問

喲?。?!下次見~~~


原文地址:https://mp.weixin.qq.com/s?src=http://ellwoo.com.cn/skin/st05skin/image/nopic.gif>

原文作者:testerStudy

(責(zé)任編輯:小編)
下一篇:

蒸汽冷凝水回收系統(tǒng)在洗滌領(lǐng)域的應(yīng)用

上一篇:

垃圾發(fā)電線下活動!北京-垃圾發(fā)電廠運營管理高級研修班,進來了解!

打賞
免責(zé)聲明
本文僅代表作者個人觀點,本站未對其內(nèi)容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,作者需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請及時聯(lián)系我們