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

1.路径处理

1.找模块:sys.path

import sys

print(sys.path)

 

在这里插入图片描述

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

 

在这里插入图片描述

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

        • 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())

 

在这里插入图片描述

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

 

在这里插入图片描述

  • 2.os.chdir():切换工作目录

  • 3.os.mkdir(“test_dir”)

    • 创建工作目录

    • os.mkdir(“test_dir”)

  • 4.os.rmdir()

    • 删除工作目录

    • os.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:

程序发生异常后,你希望程序做的事情

- 1.程序先执行try 当中的代码

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

- 3.例子:

  - 1.except捕获了
try:
    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 range
      - # 捕获多个时

 

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

"""

 

在这里插入图片描述

打印结果:

 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

"""

 

最后

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

哟!!!下次见~~~
在这里插入图片描述

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python—-异常处理、断言和路径处理,简单、清晰版 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • Python实现简繁体转换,现在的人玩得老花了

    1、opencc-python 首先介绍opencc中的Python实现库,它具有安装简单,翻译准确,使用方便等优点。对于我们日常的需求完全能够胜任。 1.1安装opencc-python 首先在terminal中安装opencc-python。 pip install opencc-python   1.2内建的opencc翻译配置 这里有四种内建的ope…

    Python开发 2023年4月2日
    00
  • Python+AI给老照片上色

    前言 哈喽,大家好。有没有谁跟我一样喜欢老照片的朋友,老照片总是让人感觉有一种情怀,可能这就是怀念吧。有一次无意中看到 了很久很久以前的照片都是黑白的,当时很想给照片添加点颜色,但是不知道怎么搞。今天,我终于发现了怎么去解决这个问 题,想了想,我决定得把这个分享给大家…   今天我们分享用NoGAN的图像增强技术给老照片着色。效果如下: 原图 上色后 NoG…

    Python开发 2023年4月2日
    00
  • 5 个方便好用的 Python 自动化脚本,拿来就用

    前言 相比大家都听过自动化生产线、自动化办公等词汇,在没有人工干预的情况下,机器可以自己完成各项任务,这大大提升了工作 效率。 编程世界里有各种各样的自动化脚本,来完成不同的任务。 尤其Python非常适合编写自动化脚本,因为它语法简洁易懂,而且有丰富的第三方工具库。 这次我们使用Python来实现几个自动化场景,或许可以用到你的工作中。 1、自动化阅读网页…

    Python开发 2023年4月2日
    00
  • 【Python】爱不释手的弹球小游戏

    前言 周末到了,不想给大家太多的压力,今天就给大家分享一个比较简单的弹球小游戏吧。这无聊的周末又有事可以做了,nice… 先看一下我们的最终效果图 我们分9步来讲解如何写这个小游戏 1.创建游戏的主界面 我们用Python的内置模块Tkinter来完成了,它是Python的标准GUI工具包,可以非常方便在制作GUI小工具,因为是跨平台的,可以方便的在 win…

    Python开发 2023年4月2日
    00
  • Python图片压缩处理

    前言 不知道有没有人跟我有一样的烦恼,有时候图片太大了占内存很烦,本来手机内存也就那么点,放一个图片稍微大一点的,都不 能放一个成百上千张,这不是很烦嘛。于是,这又让我来灵感了,既然图片给了我难题,那么我就来接受这样的挑战。所以,我 决定用python来试试可不可以压缩图片,不是不知道,一试就成功了,那么好的东西怎么能一个人独享呢,当然要分享出来给大 家呀~…

    Python开发 2023年4月2日
    00
  • 5 行 Python 代码就能让你的电脑永不息屏,这波逼必须装到…

    前言 首先,必须得承认Python 是一门优雅、易入门的编程语言。往往用很少量的代码,就能帮助你完成一件很漂亮的事儿。这也是我 使用python多年的心里话。比起那些难、麻烦的的软件,python圆了我的程序梦. 最开始学习 Python,不需要太过复杂。只要玩儿的开心就行,慢慢培养兴趣,等你上手后,你会学习的更有信心。 今天我们就来玩玩儿,5 行代码能做啥…

    Python开发 2023年4月2日
    00
  • 用Python制作销售数据可视化看板,展示分析一步到位

    前言 在数据时代,销售数据分析的重要性已无需赘言。 只有对销售数据的准确分析我们才有可能找准数据变动(增长或下滑)的原因。 然后解决问题、发现新的增长点才会成为可能! 今天就给大家介绍一个用Python制作销售数据大屏的方法。 主要使用Python的Streamlit库、Plotly库、Pandas库进行搭建。 其中Pandas处理数据,Plotly制作可视…

    Python开发 2023年4月2日
    00
  • Python 实现自动刷抖音,解放双手了

    前言 不知道有没有小伙伴跟我一样,每次刷抖音都不想动手,好希望能够有什么东西代替我的手指,我给它一个命令,它就明白我要什么。于 是,我利用空闲时间操作了一下,终于用Python把自动刷抖音给搞出来了,这下真的是解决了我长久以来的困扰… 工具准备 1.Python3.7.7 2.adb(Android debug bridge) 3.uiautomatorvi…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部