客服热线: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内置的目录- 3.虽然说python的安装目录下也可以存放我们写的模块,但是不建议(太多了,不大好找)- 4.如果以后你发现模块导入不了了 ,可以使用

1.路径处理

1.找模块:sys.path

import sys print(sys.path)

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


- 1.理解

- 1.是python去查找包或模块 - 2.项目开始根目录,python内置的目录 - 3.虽然说python的安装目录下也可以存放我们写的模块,但是不建议(太多了,不大好找) - 4.如果以后你发现模块导入不了了 ,可以使用下sys.path - 5.返回的是一个数组 - 6.用的时候需要导入sys:import sys - python的目录,主要放外部的库,或者第三方的模块

- 2.两种导包的方法再去找

- 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 # 当前文件的绝对路径 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.应用场景


  • 例子:假设若需要打开另外一个包pac01下的demo.txt
  • 1.思路
    • 1.获取当前文件的绝对路径

abs_path=os.path.abspath(file)


    • 2.获取当前文件的目录路径

dir_name =os.path.dirname(abs_path)


    • 3.当前文件的目录路径和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') - 这种写法不建议,因为不同的系统,windows一般是,mac是/,改来改去麻烦 - 4.打开文件并读取 - with open(txt_file_path,encoding="utf8") as f: print(f.read())


  • PS:获取文件路径时,路径或文件不一定要真实存在,了解这即可


3.工作目录


  • 1.os.getcwd():获取当前的工作目录
    • 1.你在哪个目录下运行python程序,输出的是哪个路径



print(os.getcwd())




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

创建工作目录nos.mkdir(“test_dir”)


  • 4.os.rmdir()

删除工作目录nos.rmdir(“test_dir”)


  • 5.listdir()
    • 获取当前路径下的目录列表,返回列表格式数据




print(os.listdir())




  • 6.os.path.isfile()
    • 判断当前文件是否是文件,返回布尔值


  • 7.os.path.isdir
    • 判断当前文件是否是目录,返回布尔值



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



2.异常处理

1.异常理解


  • 1.程序如果遇到异常,不会再执行
  • 2.写代码的人不能让程序遇到异常就终止运行
    • 1.捕获他catch
      • 改变程序遇到异常的行为,异常处理,希望程序不要终止,按照我说的办,叫做异常的捕获


    • 2.抛出他raise



2.异常处理


  • 1.异常的捕获
    • 1.基本的写法:



try:

你要执行的可能发生异常的代码

except:

程序发生异常后,你希望程序做的事情n- 1.程序先执行try 当中的代码 - 2.但是一旦try当中某个代码报错,会执行跳到except,try剩下的代码不会执行 - 3.例子: - 1.except捕获了ntry: print("正在运行代码") a = 1 / 0 print(f"计算结果:{a}") except: print("1不能除0,你需要改除数") print("其他的程序")

输出的结果是:





“”"
- 2.异常类型的捕获 - 1.没有捕获该类型的情况 - # try:

try: print("正在运行代码") a=1/0 print(f"计算结果:{a}") except IndexError: print("1不能除0,你需要改除数") print("其他的程序") # 只会打印 正在运行代码,因为报错了,无法捕获ZeroDivisionError异常,



- 2.捕获到该类型的错误

try: print("正在运行代码") a=1/0 print(f"计算结果:{a}") except ZeroDivisionError: print("1不能除0,你需要改除数") print("其他的程序")

输出的结果是:




  • 3.打印异常信息Exception(或某种类型的报错) as e
    - 1.单个异常的 - # 打印异常信息,一般用此方法


try: print("正在运行代码") a=1/0 print(f"计算结果:{a}") except ZeroDivisionError as e: print(e) print("其他的程序")

输出的结果是:




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

打印的结果:


方法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

打印的结果:


- 具体用哪个,根据实际情况来


  • 2.try…finally
    • 1.finally后的代码无论正常与否,都会执行
      • 1.正常的




try: 1/1 print("正常执行的代码") except ZeroDivisionError as e: print("不能除以0") finally: print("无论正常与否,都会执行的代码")

打印的结果:




- 2.异常的

try: 1/0 print("正常执行的代码") except ZeroDivisionError as e: print("不能除以0") finally: print("无论正常与否,都会执行的代码")

打印的结果:


- 2.常见应用在打开文件后,**关闭文件** - # 假设demo.py被打开了

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

打印结果:

文件读取失败

not readablen“”"


  • 2.异常的抛出
    • 例子1:



def adult_add(a,b): """两个大于等于18的数相加;小于18的不能相加""" if (a<18) or (b<18): raise ValueError("参数必须大于或等于18") c=a+b return c adult_add(18,19) adult_add(3,4) #ValueError: 参数必须大于或等于18 print("函数执行完毕") """



打印结果:

File ".../demo03_raise.py", line 13, in adult_add raise ValueError("参数必须大于或等于18") ValueError: 参数必须大于或等于18 """


  • 2.基于上个例子调用:


- try: adult_add(3, 4) # ValueError: 参数必须大于或等于18 except: print("函数执行完毕") # 打印结果:函数执行完毕


  • 3.可用于断言的场景


3.断言

1.理解

- 1.assert后面跟一个条件语句,条件不成立就触发条件异常 - 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 """

最后

今天这篇文章到这里就结束了,喜欢的小伙伴记得点赞收藏。关于这篇文章有不懂的地方记得随时提问

哟!!!下次见~~~


原文地址:https://mp.weixin.qq.com/s?src=https://www.gl-zj.com/skin/st05skin/image/nopic.gif>

原文作者:testerStudy

(责任编辑:小编)
下一篇:

蒸汽冷凝水回收系统在洗涤领域的应用

上一篇:

垃圾发电线下活动!北京-垃圾发电厂运营管理高级研修班,进来了解!

打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们