python导入os模块报语法错误_【python基础语法】OS模块处理文件绝对路径,内置的异常类型、捕获、处理(第9天课堂笔记)...

importos"""通过文件的路径去打开文件

相对路径:相对当前的工作路径去定位文件位置

.:代表当前路径

..:代表上一级路径(父级路径)

绝对路径:相对于电脑的根目录来进行定位

绝对路径:相对于电脑的根目录来进行定位(windows下面就是根目录)

电脑放在别的电脑还可以继续使用,需要用到OS模块

通过OS模块处理绝对路径

通过OS模块构造文件的绝对路径

os.path.dirname:获取路径的父级目录

os.path.join方法:做路径拼接

os其他方法:

os.getcwd() 显示当前的工作路径

os.chdir() 切换工作路径

os.mkdir() 删掉一个目录

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

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

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

魔法变量

__file__:代表当前文件在电脑中的绝对路径

__name__:所在模块(文件)的模块名,(如果是在程序启动文件中的话,那么值__main__)"""

#相对路径

with open("../nmb_2020_02_19.py","r",encoding="utf8") as f:

data=f.read()print(data)#绝对路径

with open("D:\project\class23\Day04_2020_02_22\python23_04day_task.py","r",encoding="utf8") as f:

data=f.read()print(data)#电脑放在别的电脑还可以继续使用,需要用到OS模块

f_path = "D:\project\class23\Day04_2020_02_22\python23_04day_task.py"with open(f_path,"r",encoding="utf8") as f:

f.read()#通过OS模块构造文件的绝对路径#os.path.dirname:获取路径的父级目录

res =os.path.dirname(f_path)print(res)#魔法变量#__file__:代表当前文件在电脑中的绝对路径

print(__file__)

res= os.path.dirname(__file__)#直到找到项目的绝对路径为止:base_dir

base_dir =os.path.dirname(res)print(base_dir)#字符串拼接,不推荐使用,linux和windows不兼容

f2 = base_dir + "\\" +"Day04_2020_02_22" + "\\"+ "python23_04day_task.py"

print(f2)#os.path.join方法:做路径拼接

file_path = os.path.join(base_dir,"Day04_2020_02_22","python23_04day_task.py")print(file_path)

with open(file_path,"r",encoding="utf8") as f:

f.read()#查看当前的工作路径#工作路径和文件路径是不一样的

print(os.getcwd())#切换工作路径到父级目录

os.chdir("..")print(os.getcwd())#切换回来

os.chdir("Day09_2020_02_28")print(os.getcwd())#获取当前工作路径下所有的文件和目录

print(os.listdir("D:\project\class23"))#创建文件夹

os.mkdir("python666")#删除文件夹

os.rmdir("python666")#判断是否是文件

res = os.path.isfile("D:\project\class23\Day09_2020_02_28\python23_09day_task.py")print(res)#判断是否是目录

res2 = os.path.isdir("D:\project\class23\Day09_2020_02_28\python23_09day_task.py")print(res2)"""python中常见的异常

变量没定义:

NameError:name 'a' is not defined

语法错误:

SyntaxError:invalid syntax

键不存在:

KeyError:'age'

没找到模块:不要和python内置模块(os、random)、第三方模块重名(requests)、包重名,不然会报错

ModuleNotFoundError: No module named 'requet'

类型错误:

TypeError: can only concatenate str (not "int") to str

异常分析:

异常类型介绍

BaseException: 所有异常类型的基类

SystemExit 解释器请求退出

KeyboardInterrupt 用户中断执行(通常是输入^C)

GeneratorExit 生成器(generator)发生异常来通知退出

Exception 常规错误的基类

错误原因:一行一行往上找,增加自己解决问题的能力,慢慢积累

发生异常程序还要继续运行怎么办?

异常捕获:

try:

except:

else:

finally:"""

#避免异常终端程序运行:异常捕获

a = 100

try:print(a + "abc")except:pass

print("python23")#把不确认会不会报错的代码,方法放在try里面

try:

with open("ttt.txt","r") as f:

f.read()except:#捕获到了异常

print("打开的文件不存在")

with open("ttt.txt","w") as f:pass

#指定捕获异常的类型,异常捕获不能捕获语法错误

a = 100

try:print(a + "abc")#except后面可以写异常类型(指定只捕获这个类型的错误)指定捕获的类型#as可以捕获到异常提示的信息,e接收错误信息#方式一:

exceptTypeError as e:print("捕获到了类型异常")print(e)exceptNameError:print("捕获到了变量没有被定义的异常")print("python23")#方式二:except指定捕获多个异常类型

try:print(a + "abc")#except后面可以写异常类型(指定只捕获这个类型的错误)

except(TypeError,NameError,KeyError) as e:print("捕获到了类型异常")print(e)#捕获所有类型的异常(语法错误除外)

a = 100

try:#f = open("ttt.txt")

aa = 10000

#print(a + "abc")#Exception可以捕获除了语法错误的所有错误类型

exceptException as e:print("捕获到了类型异常")print(e)else:#try里面没有捕获到(发生)异常,那么就会执行else里面的代码

print("没有捕获到异常")finally:#f.close()

#try里面的代码不管是否发生异常,都会执行

print("-----finally-----")

内置异常基类

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

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

BaseException:  所有异常的基类

Exception(重点掌握)

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

BufferError

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

LookupError

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

内置异常的层次结构

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             bytes和bytearray相关的警告的基类

+-- ResourceWarning           与资源使用相关的警告的基类。

如何根据错误的信息寻找代码错误的根源:

从下往上依次排查异常发生的位置、类型、原因

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值