1. import os
  2. """
  3. 通过文件的路径去打开文件
  4. 相对路径:相对当前的工作路径去定位文件位置
  5. .:代表当前路径
  6. ..:代表上一级路径(父级路径)
  7. 绝对路径:相对于电脑的根目录来进行定位
  8. 绝对路径:相对于电脑的根目录来进行定位(windows下面就是根目录)
  9. 电脑放在别的电脑还可以继续使用,需要用到OS模块
  10. 通过OS模块处理绝对路径
  11. 通过OS模块构造文件的绝对路径
  12. os.path.dirname:获取路径的父级目录
  13. os.path.join方法:做路径拼接
  14.  
  15. os其他方法:
  16. os.getcwd() 显示当前的工作路径
  17. os.chdir() 切换工作路径
  18. os.mkdir() 删掉一个目录
  19. os.listdir() 获取当前路径下的目录列表,返回列表格式数据
  20. os.path.isdir() 判断当前文件是否是目录,返回布尔值
  21. os.path.isfile() 判断当前文件是否是文件,返回布尔值
  22.  
  23. 魔法变量
  24. __file__:代表当前文件在电脑中的绝对路径
  25. __name__:所在模块(文件)的模块名,(如果是在程序启动文件中的话,那么值__main__)
  26. """
  27. # 相对路径
  28. with open("../nmb_2020_02_19.py","r",encoding="utf8") as f:
  29. data = f.read()
  30. print(data)
  31.  
  32. # 绝对路径
  33. with open("D:\project\class23\Day04_2020_02_22\python23_04day_task.py","r",encoding="utf8") as f:
  34. data = f.read()
  35. print(data)
  36.  
  37. # 电脑放在别的电脑还可以继续使用,需要用到OS模块
  38. f_path = "D:\project\class23\Day04_2020_02_22\python23_04day_task.py"
  39.  
  40. with open(f_path,"r",encoding="utf8") as f:
  41. f.read()
  42.  
  43. # 通过OS模块构造文件的绝对路径
  44. # os.path.dirname:获取路径的父级目录
  45. res = os.path.dirname(f_path)
  46. print(res)
  47.  
  48. # 魔法变量
  49. # __file__:代表当前文件在电脑中的绝对路径
  50. print(__file__)
  51. res = os.path.dirname(__file__)
  52. # 直到找到项目的绝对路径为止:base_dir
  53. base_dir = os.path.dirname(res)
  54. print(base_dir)
  55.  
  56. # 字符串拼接,不推荐使用,linux和windows不兼容
  57. f2 = base_dir + "\\" +"Day04_2020_02_22" + "\\"+ "python23_04day_task.py"
  58. print(f2)
  59.  
  60. # os.path.join方法:做路径拼接
  61. file_path = os.path.join(base_dir,"Day04_2020_02_22","python23_04day_task.py")
  62. print(file_path)
  63.  
  64. with open(file_path,"r",encoding="utf8") as f:
  65. f.read()
  66.  
  67. # 查看当前的工作路径
  68. # 工作路径和文件路径是不一样的
  69. print(os.getcwd())
  70. # 切换工作路径到父级目录
  71. os.chdir("..")
  72.  
  73. print(os.getcwd())
  74. # 切换回来
  75. os.chdir("Day09_2020_02_28")
  76. print(os.getcwd())
  77.  
  78. # 获取当前工作路径下所有的文件和目录
  79. print(os.listdir("D:\project\class23"))
  80.  
  81. # 创建文件夹
  82. os.mkdir("python666")
  83.  
  84. # 删除文件夹
  85. os.rmdir("python666")
  86.  
  87. # 判断是否是文件
  88. res = os.path.isfile("D:\project\class23\Day09_2020_02_28\python23_09day_task.py")
  89. print(res)
  90. # 判断是否是目录
  91. res2 = os.path.isdir("D:\project\class23\Day09_2020_02_28\python23_09day_task.py")
  92. print(res2)
  93.  
  94. """
  95. python中常见的异常
  96. 变量没定义:
  97. NameError:name 'a' is not defined
  98. 语法错误:
  99. SyntaxError:invalid syntax
  100. 键不存在:
  101. KeyError:'age'
  102. 没找到模块:不要和python内置模块(os、random)、第三方模块重名(requests)、包重名,不然会报错
  103. ModuleNotFoundError: No module named 'requet'
  104. 类型错误:
  105. TypeError: can only concatenate str (not "int") to str
  106.  
  107. 异常分析:
  108. 异常类型介绍
  109. BaseException: 所有异常类型的基类
  110. SystemExit 解释器请求退出
  111. KeyboardInterrupt 用户中断执行(通常是输入^C)
  112. GeneratorExit 生成器(generator)发生异常来通知退出
  113. Exception 常规错误的基类
  114.  
  115. 错误原因:一行一行往上找,增加自己解决问题的能力,慢慢积累
  116.  
  117. 发生异常程序还要继续运行怎么办?
  118. 异常捕获:
  119. try:
  120. except:
  121. else:
  122. finally:
  123. """
  124. # 避免异常终端程序运行:异常捕获
  125. a = 100
  126. try:
  127. print(a + "abc")
  128. except:
  129. pass
  130. print("python23")
  131.  
  132. # 把不确认会不会报错的代码,方法放在try里面
  133. try:
  134. with open("ttt.txt","r") as f:
  135. f.read()
  136. except:
  137. # 捕获到了异常
  138. print("打开的文件不存在")
  139. with open("ttt.txt","w") as f:
  140. pass
  141. # 指定捕获异常的类型,异常捕获不能捕获语法错误
  142. a = 100
  143. try:
  144. print(a + "abc")
  145. # except后面可以写异常类型(指定只捕获这个类型的错误)指定捕获的类型
  146. # as可以捕获到异常提示的信息,e接收错误信息
  147. # 方式一:
  148. except TypeError as e:
  149. print("捕获到了类型异常")
  150. print(e)
  151. except NameError:
  152. print("捕获到了变量没有被定义的异常")
  153. print("python23")
  154.  
  155. # 方式二:except指定捕获多个异常类型
  156. try:
  157. print(a + "abc")
  158. # except后面可以写异常类型(指定只捕获这个类型的错误)
  159. except (TypeError,NameError,KeyError) as e:
  160. print("捕获到了类型异常")
  161. print(e)
  162. # 捕获所有类型的异常(语法错误除外)
  163. a = 100
  164. try:
  165. # f = open("ttt.txt")
  166. aa = 10000
  167. # print(a + "abc")
  168. # Exception可以捕获除了语法错误的所有错误类型
  169. except Exception as e:
  170. print("捕获到了类型异常")
  171. print(e)
  172. else:
  173. # try里面没有捕获到(发生)异常,那么就会执行else里面的代码
  174. print("没有捕获到异常")
  175. finally:
  176. # f.close()
  177. # try里面的代码不管是否发生异常,都会执行
  178. print("-----finally-----")

内置异常基类

在 Python 中,所有异常必须为一个派生自 BaseException 的类的实例。 通过子类化创建的两个不相关异常类永远是不等效的,既使它们具有相同的名称。

下列异常主要被用作其他异常的基类。

BaseException:  所有异常的基类

  • Exception(重点掌握)

    所有内置的非系统退出类异常都派生自此类。 所有用户自定义异常也应当没打算自此类。

  • BufferError

    当与 缓冲区 相关的操作无法执行时将被引发。

  • LookupError

    此基类用于派生当映射或序列所使用的键或索引无效时引发的异常: IndexErrorKeyError

内置异常的层次结构

  1. BaseException             所有异常的基类        
    +-- SystemExit              解释器请求退出
    +-- KeyboardInterrupt         用户中断执行(通常是输入^C)
    +-- GeneratorExit            生成器(generator)发生异常来通知退出
    +-- Exception               常规错误的基类
        +-- StopIteration              迭代器没有更多值
        +-- StopAsyncIteration             必须通过异步迭代器对象的__anext__()方法引发以停止迭代
        +-- ArithmeticError                 所有数值计算错误的基类
        |   +-- FloatingPointError             浮点计算错误
        |   +-- OverflowError                 数值运算超出最大限制
        |   +-- ZeroDivisionError             除(或取模)零 (所有数据类型
        +-- AssertionError                 断言语句失败
        +-- AttributeError                 对象没有这个属性
        +-- BufferError                   与缓冲区相关的操作时引发
        +-- EOFError                       没有内建输入,到达EOF 标记
        +-- ImportError                     导入失败
        |   +-- ModuleNotFoundError       找不到模块
        +-- LookupError                     无效数据查询的基类
        |   +-- IndexError                     序列中没有此索引(index)
        |   +-- KeyError                       映射中没有这个键
        +-- MemoryError                     内存溢出错误
        +-- NameError                       未声明、初始化对象
        |   +-- UnboundLocalError             访问未初始化的本地变量
        +-- OSError                         操作系统错误,
        |   +-- BlockingIOError               操作将阻塞对象设置为非阻塞操作
        |   +-- ChildProcessError             子进程上的操作失败
        |   +-- ConnectionError               与连接相关的异常的基类
        |   |   +-- BrokenPipeError             在已关闭写入的套接字上写入
        |   |   +-- ConnectionAbortedError     连接尝试被对等方中止
        |   |   +-- ConnectionRefusedError     连接尝试被对等方拒绝
        |   |   +-- ConnectionResetError       连接由对等方重置
        |   +-- FileExistsError               创建已存在的文件或目录
        |   +-- FileNotFoundError             请求不存在的文件或目录
        |   +-- InterruptedError             系统调用被输入信号中断
        |   +-- IsADirectoryError             在目录上请求文件操作
        |   +-- NotADirectoryError           在不是目录的事物上请求目录操作
        |   +-- PermissionError              在没有访问权限的情况下运行操作
        |   +-- ProcessLookupError           进程不存在
        |   +-- TimeoutError                 系统函数在系统级别超时
        +-- ReferenceError               弱引用试图访问已经垃圾回收了的对象
        +-- RuntimeError                 一般的运行时错误
        |   +-- NotImplementedError     尚未实现的方法
        |   +-- RecursionError           解释器检测到超出最大递归深度
        +-- SyntaxError                   Python 语法错误
        |   +-- IndentationError         缩进错误
        |         +-- TabError          Tab 和空格混用
        +-- SystemError             一般的解释器系统错误
        +-- TypeError               对类型无效的操作
        +-- ValueError              传入无效的参数
        |   +-- UnicodeError             Unicode 相关的错误
        |         +-- UnicodeDecodeError     Unicode 解码时的错误
        |         +-- UnicodeEncodeError     Unicode 编码时错误
        |         +-- UnicodeTranslateError Unicode 转换时错误
        +-- Warning                       警告的基类
              +-- DeprecationWarning         关于被弃用的特征的警告
              +-- PendingDeprecationWarning   关于构造将来语义会有改变的警告
              +-- RuntimeWarning           可疑的运行行为的警告
              +-- SyntaxWarning            可疑的语法的警告
              +-- UserWarning             用户代码生成的警告
              +-- FutureWarning           有关已弃用功能的警告的基类
              +-- ImportWarning            模块导入时可能出错的警告的基类
              +-- UnicodeWarning           Unicode相关的警告的基类
              +-- BytesWarning             bytesbytearray相关的警告的基类
              +-- ResourceWarning           与资源使用相关的警告的基类。
  2.  
  3. 如何根据错误的信息寻找代码错误的根源:
    从下往上依次排查异常发生的位置、类型、原因

  1.  
  1.  

【python基础语法】OS模块处理文件绝对路径,内置的异常类型、捕获、处理(第9天课堂笔记)的更多相关文章

  1. Python基础入门-os模块

    今天我们来介绍一下os模块中常用的一些方法,当然python中的os模块中提供的使用方法有很多,但是这里面小编会列举出来一些和实际工作中应用的相关的方法,而且会有一些实际的例子方便大家对os模块理解. ...

  2. python基础之os模块操作

    # os模块 目录相关内置库import os# . 当前目录 .. 返回上一级目录# 1. os.path.abspath() --获取当前文件的绝对路径(不包含os模块.py) pwd# path ...

  3. Python基础(os模块)

    os模块用于操作系统级别的操作: os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当 ...

  4. [Python基础]009.os模块(1)

    os模块(1) 介绍 os 常量 文件目录操作 文件属性操作 遍历文件夹 介绍 os模块是系统服务应用程序接口,是Python最常用的模块之一. os模块包含了对文件和文件夹的操作,操作系统相关的操作 ...

  5. python 基础(八) os模块

    OS模块 概念:包含了普遍的操作 系统的功能 一.函数 函数名 函数说明 os.name 获取操作系统类型 nt->Windows posix->Linux/Unix os.listdir ...

  6. [Python基础]010.os模块(2)

    os模块(2) 介绍 os 常量 路径 判断路径属性 路径变换 文件属性 相同文件 介绍 - os.path模块,主要处理路径操作,包含了各种处理文件和文件名的方法. os.path 常量 os.pa ...

  7. python基础之函数式编程、匿名函数、内置函数

    一 函数式编程 不修改外部状态. 模仿数学里得函数进行编程. 用函数编程写出得代码相当精简. 可读性比较差. 例子: y=2*x+1 x=1 def test(x): return 2*x+1 tes ...

  8. 【python基础语法】模块和包管理,文件的操作(第8天课堂笔记)

    ''' 模块和包管理 模块和包的定义: 模块:模块是一个Python文件,以.py结尾,包含了Python对象定义和Python语句 包:Python中的包就是一个包含__init__.py文件的目录 ...

  9. python学习第五讲,python基础语法之函数语法,与Import导入模块.

    目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...

随机推荐

  1. quick-cocos2d-x项目《狂点小怪兽》总结

    最近找了个公司实习,领导让我把公司的<狂点小怪兽>C++游戏用Lua重写.大概用了一个星期完成. 第一次使用quick-cocos2d-x,磕磕碰碰的也算是走了一遍流程. 1. quick ...

  2. IIS 32位/64位 全局模式切换

    IIS7以上可以对单个应用程序池进行设置. IIS6需要用命令. 一.32位模式1.cscript %systemdrive%\inetpub\adminscripts\adsutil.vbs set ...

  3. Day3-Python3基础-函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 1.函数的定义 定义: 函数是指将一组语句的集 ...

  4. oc---instancetype和id的异同

    [instancetype和id的异同] 相同点:都可以作为方法的返回类型. 不同点: (1)instancetype可以返回方法所在类相同类型的对象,id只能返回未知类型的对象: (2)instan ...

  5. markdown时序图语法

    语法 - 代表实线 , 主动发送消息,比如 request请求 > 代表实心箭头 , 同步消息,比如 AJAX 的同步请求 -- 代表虚线,表示返回消息,spring Controller re ...

  6. 小程序--->scroll-view组件不能触发相应滚动事件

    小程序scroll-view组件不能触发相应滚动事件 在制作加载更多时会发现不能触发相应事件,一般情况下首先要查看两个必要的属性scroll-view的高度是否设置,第二就是scroll-view的滚 ...

  7. tarjan缩点练习 洛谷P3387 【模板】缩点+poj 2186 Popular Cows

    缩点练习 洛谷 P3387 [模板]缩点 缩点 解题思路: 都说是模板了...先缩点把有环图转换成DAG 然后拓扑排序即可 #include <bits/stdc++.h> using n ...

  8. 笔记常用Linux命令(三) 查看服务器日志

    服务器日志 用于记录服务器的运行情况 查看服务器日志 tail:查看后面几行 n 显示行数 f 持续侦测后面的内容,查看服务器日志常用 查看最新的服务日志(静态) 命令格式:tail -n 行数 日志 ...

  9. 牛客网在线编程_有序矩阵中第K小的元素

    Leetcode378原题,所以一样没有数据范围...( log(max-min)二分答案,然后NlogN二分每一行求出小于答案的元素个数,为了保证二分的答案在矩阵中,二分写的要和平常不太一样,最后输 ...

  10. 《Kubernetes权威指南》01_Kubernetes入门——Kubernetes 是什么

    01_Kubernetes入门 li {list-style-type:decimal;}.wiz-editor-body ol.wiz-list-level2 > li {list-style ...