守听 发表于 2022-8-9 14:46:41

Python----异常处理、断言和路径处理,简单、清晰版

1.路径处理

1.找模块:sys.path

import sys

print(sys.path) 
https://img-blog.csdnimg.cn/af72a765115a40f299c99a2e54f83d67.png
- 1.理解

- 1.是python去查找包或模块

- 2.项目开始根目录,python内置的目录

- 3.虽然说python的安装目录下也可以存放我们写的模块,但是不建议(太多了,不大好找)

- 4.如果以后你发现模块导入不了了 ,可以使用下sys.path

- 5.返回的是一个数组

- 6.用的时候需要导入sys:import sys

- python的目录,主要放外部的库,或者第三方的模块 
- 2.两种导包的方法再去找

python学习交流Q群:903971231####
- 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) 
https://img-blog.csdnimg.cn/b9fddf453a424ae4b74694248692b039.png
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) 
https://img-blog.csdnimg.cn/e8c2885e941440569954e213ff7c424e.png
- 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”)
[*]PS一般来说,是通过某个文件去获取项目的跟路径



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()) 
https://img-blog.csdnimg.cn/d36b22541105485fbb2d9c9efe57a4ee.png
- 2.其他方法:不建议用python学习交流Q群:903971231###
       - # print(dir_name+'/pac01/demo.txt')

# print(dir_name+r'\pac01\demo.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()) 
https://img-blog.csdnimg.cn/22f1afb00bb14191bafce47d71c7709a.png

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

[*]创建工作目录
[*]os.mkdir(“test_dir”)

[*]4.os.rmdir()

[*]删除工作目录
[*]os.rmdir(“test_dir”)

[*]5.listdir()

[*]获取当前路径下的目录列表,返回列表格式数据
https://img-blog.csdnimg.cn/4f63df6a2c084a1e80b77be1f5441af1.png

print(os.listdir()) 
https://img-blog.csdnimg.cn/9c63fc689a75461da8e6211c94c363fc.png

[*]6.os.path.isfile()

[*]判断当前文件是否是文件,返回布尔值

[*]7.os.path.isdir

[*]判断当前文件是否是目录,返回布尔值

print(os.path.isfile(__file__))
print(os.path.isdir(__file__)) 
https://img-blog.csdnimg.cn/10916f6438c74b03a4ed11cccffa60d7.png
2.异常处理

1.异常理解


[*]1.程序如果遇到异常,不会再执行
[*]2.写代码的人不能让程序遇到异常就终止运行

[*]1.捕获他catch

[*]改变程序遇到异常的行为,异常处理,希望程序不要终止,按照我说的办,叫做异常的捕获

[*]2.抛出他raise

2.异常处理


[*]1.异常的捕获

[*]1.基本的写法:

try:
你要执行的可能发生异常的代码
except:
程序发生异常后,你希望程序做的事情
- 1.程序先执行try 当中的代码

- 2.但是一旦try当中某个代码报错,会执行跳到except,try剩下的代码不会执行

- 3.例子:

- 1.except捕获了
try:
    print("正在运行代码")

    a = 1 / 0

    print(f"计算结果:{a}")

except:

    print("1不能除0,你需要改除数")

print("其他的程序") 
输出的结果是:
https://img-blog.csdnimg.cn/eee204dd0a214064aa91558e8748117c.png
https://img-blog.csdnimg.cn/d136f8bf8128451e84ed2be6c991dfa8.png
“”"

- 2.异常类型的捕获

    - 1.没有捕获该类型的情况

      - # try:
try:

print("正在运行代码")

a=1/0

print(f"计算结果:{a}")

except IndexError:

print("1不能除0,你需要改除数")



print("其他的程序")

# 只会打印 正在运行代码,因为报错了,无法捕获ZeroDivisionError异常, 
https://img-blog.csdnimg.cn/62e0ee8b63bf4853b86c3d6605cc3036.png
- 2.捕获到该类型的错误try:

print("正在运行代码")

a=1/0

print(f"计算结果:{a}")

except ZeroDivisionError:

print("1不能除0,你需要改除数")


print("其他的程序") 
输出的结果是:
https://img-blog.csdnimg.cn/16634d4f6cf64d21915bf4cd5516943d.png

[*]3.打印异常信息Exception(或某种类型的报错) as e
- 1.单个异常的

- # 打印异常信息,一般用此方法
try:

print("正在运行代码")

a=1/0

print(f"计算结果:{a}")

except ZeroDivisionError as e:

print(e)

print("其他的程序") 
输出的结果是:
https://img-blog.csdnimg.cn/befa47c2beec4f66a9749f4067fbf7a6.png
https://img-blog.csdnimg.cn/abc181545ca54b0e9278fccef4539c8f.png
    - 2.多个异常的try:

lst = ['yz', 'addd']

lst

a=1/0


except ZeroDivisionError as err:

print(err)

print("hello word")

# IndexError: list index out of range
      - # 捕获多个时 
方法1:

try:

{"name":"zhangsan","age":18}['name1']

lst = ['yz', 'addd']

lst

a=1/0

except (ZeroDivisionError,IndexError,KeyError) as err:

print(err)

print("hello word") 
打印的结果:
https://img-blog.csdnimg.cn/b2a8137b943f49a4bb67bfee10de71f5.png
方法2

try:

a = 1 / 0

{"name":"zhangsan","age":18}['name1']

lst = ['yz', 'addd']

lst

except ZeroDivisionError as err:

print(err)

print("ZeroDivisionError")

# 抓到这个异常

# division by zero

# ZeroDivisionError

except IndexError:

print("IndexError")

# 抓到这个异常 IndexError

except KeyError:

print("KeyError")

# 抓到这个异常 KeyError 
打印的结果:
https://img-blog.csdnimg.cn/945255a1ffb4481fad1bda927414aa16.png
      - 具体用哪个,根据实际情况来

[*]2.try…finally

[*]1.finally后的代码无论正常与否,都会执行

[*]1.正常的


try:

1/1

print("正常执行的代码")
except ZeroDivisionError as e:

print("不能除以0")

finally:

print("无论正常与否,都会执行的代码") 
打印的结果:
https://img-blog.csdnimg.cn/445d47dd22f94402afafeb14bc86f54b.png
https://img-blog.csdnimg.cn/a920486068a34e8c9fbb26f581e806ad.png
- 2.异常的
try:

1/0

print("正常执行的代码")

except ZeroDivisionError as e:

print("不能除以0")

finally:

print("无论正常与否,都会执行的代码") 
打印的结果:
https://img-blog.csdnimg.cn/14c7772797fe402b8d159dca1608f781.png
- 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 readable

“”"

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("函数执行完毕")

""" 
最后

今天这篇文章到这里就结束了,喜欢的小伙伴记得点赞收藏。关于这篇文章有不懂的地方记得随时提问
哟!!!下次见~~~
https://img-blog.csdnimg.cn/2edb936aab66403fb85e9b6611c839b5.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Python----异常处理、断言和路径处理,简单、清晰版