变量f只要不为None、空列表[]、空字典{}、空元组()、0等一系列代表空和无的对象,就都会转化为True
f.close()代表关闭文件,使其不能再读写了
finally:代表如果还有考虑不到的错误,就都执行以下输出
def main():
f = None
try:
f = open('致橡树.txt', 'r', encoding='utf-8')
print(f.read())
except FileNotFoundError:
print('无法打开指定的文件!')
except LookupError:
print('指定了未知的编码!')
except UnicodeDecodeError:
print('读取文件时解码错误!')
finally:
if f:
f.close()
if __name__ == '__main__':
main()
finally
try:
num = int(input('请输入一个整数:'))
result = 8 /num
print(result)
# except ZeroDivisionError:
# print('0不能做除数')
except ValueError:
print('输入的值不是合法的整数')
except Exception as r:
print('未知错误 %s' %(r))
# 没有预先判断到的错误怎么办?
# ZeroDivisionError
finally:
# 无论是否有异常,都会执行的代码
print('%%%%%%%%%%%%%%%')
# ValueError
————————————————
版权声明:本文为CSDN博主「蓝七star」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44828950/article/details/91471459
with关键字,相当于简写的try-finally,即即使异常了也可以执行类似finally的作用,不报错
def main():
try:
with open('致橡树.txt', 'r', encoding='utf-8') as f:
print(f.read())
except FileNotFoundError:
print('无法打开指定的文件!')
except LookupError:
print('指定了未知的编码!')
except UnicodeDecodeError:
print('读取文件时解码错误!')
if __name__ == '__main__':
main()
.readlines()返回所有值并返回列表
def main():
# 读取文件按行读取到列表中
with open('致橡树.txt') as f:
lines = f.readlines()
print(lines)
if __name__ == '__main__':
main()
#输出f这个列表
['woshizhixiangshu\n', 'woshilinpeiyan\n', 'yexiaofei']
assert n > 0 表示断言n是大于零的,否则程序在这里报错
def is_prime(n):
"""判断素数的函数"""
assert n > 0
for factor in range(2, int(sqrt(n)) + 1):
if n % factor == 0:
return False
return True if n != 1 else False
open()创建一个 file 对象,相关的方法才可以调用它进行读写
try except用于处理可能异常的代码块,提高代码的健壮性和容错性
try:
可能产生异常的代码块
except [ (Error1, Error2, ... ) [as e] ]:
处理异常的代码块1
except [ (Error3, Error4, ... ) [as e] ]:
处理异常的代码块2
except [Exception]:
处理其它异常
我们在捕获这个异常之后假如需要访问TA的一些属性怎么办,这个时候就可以使用as关键字 所以,这里的e是前面MyError类的一个instance,我们可以直接访问他的value,也就是你看到的e.value
except IOError as ex:
print(ex)
print('写文件时发生错误!')
比如说把w改成r,即不能写入了,那么就会报错,IORrror类中的具体错误,并用print(ex)将它打印出来
#输出结果为:
try-except
以下的最后一个except这种省略异常类的 except 语句也是合法的,它表示可捕获所有类型的异常,一般会作为异常捕获的最后一个 except 块。
try:
a = int(input("输入被除数:"))
b = int(input("输入除数:"))
c = a / b
print("您输入的两个数相除的结果是:", c )
except (ValueError, ArithmeticError):
print("程序发生了数字格式异常、算术异常之一")
except :
print("未知异常")
print("程序继续运行")
这种情况下,如果 Python 解释器找不到处理异常的 except 块,则程序运行终止,Python 解释器也将退出。
def main():
try:
with open('guido.jpg', 'rb') as fs1: #rb,以二进制格式打开一个文件用于只读
data = fs1.read()
print(type(data)) # <class 'bytes'>
with open('吉多.jpg', 'wb') as fs2: #wb,以二进制格式打开一个文件只用于写入
fs2.write(data)
except FileNotFoundError as e:
print('指定的文件无法打开.')
except IOError as e:
print('读写文件时出现错误.')
print('程序执行结束.')
[ ]是列表,{ }是字典,调用都是在[ ]里加索引或者键
字典的调用
>>> tinydict = {'a': 1, 'b': 2, 'b': '3'}
>>> tinydict['b']
'3'
列表的调用
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7 ]
print "list1[0]: ", list1[0]
#输出 list1[0]: physics