目录
1. try ... except ... else ... finally 排列 P231
2. write, read, seek, readline, readlines 基本文件操作 P245
1. try ... except ... else ... finally 排列 P231
try:
#待测试的函数
except(必需,至少一个except)errorTypeA:(可选,不声明Type就是捕获所有error):
#对 errorTypeA 的处理
except errorTypeB:
#对 errorTypeB 的处理
......:
#......
else:
# 没有出现任何异常时,执行的操作
finally:
# 不管有没有异常,都会执行的操作
我们试一下各种情况
正确分苹果: try...else...finally
错误分苹果: try...except...finally
2. write, read, seek, readline, readlines 基本文件操作 P245
似乎,只能以只写方式打开文件来写入,以只读方式打开文件来读取。。。 读写方式无法同时读写?
file1 = open('message.txt','w') # 'a' 则会以追加方式打开
file1.close() # open close 成对现
file1.write(str1)
file1.seek(0)
str2 = file1.read()
str3 = file1.read(10)
line = file1.readline()
msg = file1.readlines() # 返回值是字符串列表
3. os模块 基本目录操作 P249
os.getcwd()
os.listdir()
os.mkdir()
os.rmdir()
os.makedirs()
os.removedirs()
os.chdir()
os.walk()
4. os.path 模块 复杂目录操作 P250
os.path.abspath()
os.path.exists()
os.path.basename()
os.path.dirname()
5. os 模块 高级文件操作 P257
文件权限操作
os.access()
os.rename()
os.chmod()
os.remove()
获取文件基本信息
fileinfo = os.stat() # 返回一个文件状态对象,该对象包含大量属性
6. Exception 类
所有内置的非系统退出类异常都派生自Exception类。
所有用户自定义异常也应当派生自Exception类。
try:
可能触发异常的语句
except (GPIOError, LookupError, ValueError) [as 变量1]:
处理语句1
except KeyboardInterrupt [as 变量2]:
处理语句2
except Exception [as 变量3]:
不是以上错误类型的处理语句(因为Exception 可接收所有异常!!)
else:
未发生异常执行的语句
finally:
无论是否发生异常都执行的语句
7. raise 语句 P231
raise 语句有如下三种常用的用法:
1. raise:单独一个 raise。该语句引发当前上下文中捕获的异常(比如在 except 块中),或默认引发 RuntimeError 异常。
2. raise 异常类名称:raise 后带一个异常类名称,表示引发执行类型的异常。
3. raise 异常类名称(描述信息):在引发指定类型的异常的同时,附带异常的描述信息
try:
gpio = GPIO(f'/dev/gpiochip{chip}', line, 'in')
value = gpio.read()
if value == True:
print('HIGH (1)')
else:
print('LOW (0)')
gpio.close()
except (GPIOError, LookupError) as e:
raise Exceptions(e)