文件的输入输出,异常
1.文件
2.异常
1.文件的输入输出
#1.打开文件open函数
open(file,[option])
#file是要打开的文件
#option是可选择的参数,常见有 mode等
#2.文件的打开模式
r 制度模式,文件不存在时会报错
w 写入模式,文件存在会清空之前的内容,文件不存在则会新建文件
x 写入模式,文件存在会报错,文件不存在则会新建文件
a 追加写入模式,不清空之前的文件,之间在后面添加内容
b 以二进制读写文件, wb,rb,ab
+ 可读写模式,r+,w+,x+,a+,这几种模式还遵循了r,w,x,a
的基本原则。
#3.文件的读取
f.read(size)
#读取文件的内容,将文件的内容以字符串返回
f.readline()
# 从文件中读取单独行
字符串结尾会自动加上\n,只有当读到最后一行,才
停止添加换行符。
#如果是空行则描述为\n,一个只有换行符的字符串
f.readlines()
#一次读取所有,返回一个列表,列表的元素为文件行的
内容
#可以通过列表索引的方式将文件的每一行内容输出;
也可以通过for循环迭代输出。
#4.文件的写入
f.write()#括号内必须是字符串
f.writelines()#括号内必须是字符串元素组成的序列
#5.保存和关闭
f.flush()#将缓存区内容保存到文件当中
f.close() #对一个已经关闭的文件操作会报错
#6.光标位置
f.tell() #返回当前光标位置
f.seek(offset,from)
#常用f.seek(0)返回起始位置
#7.查看文件信息
f.closed
f.mode
f.name
#8.with 形式打开文件,里面的语句执行完后自动关闭文件
with open('flieName') as f:
f.read()
2.异常语法
try:
suite
except:
suite
except:
suite
except Exception as reason:
suite
else:
suite
finally:
suite
'''
注意:中间的except,else,finally都是可选的,但至少有一个,不然try就没有意义了,根据实际中的需求来选择。
所有错误类型都继承自BaseException
https://docs.python.org/3/library/exceptions.html#exception-hierarchy
'''
## assert 断言 用的不多
assert 1==1 #没有返回值
assert 1==2 #返回AssertionError
>>> li = ['a','b','c','d']
>>> try:
... li.index('e')
... except Exception:
... print("'e' is not in list")
... finally:
... raise ValueError("'e' is not in list")
...
'e' is not in list
Traceback (most recent call last):
File "<stdin>", line 6, in <module>
ValueError: 'e' is not in list
#触发异常
#我们可以使用raise语句自己触发异常
#raise语法格式如下:
raise [Exception [, args [, traceback]]]
#实例
#一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。
#定义一个异常非常简单,如下所示:
def functionName( level ):
if level < 1:
raise Exception("Invalid level!", level)
# 触发异常后,后面的代码就不会再执行
shell运行
f=open('test.txt','w')
b=2
d=1
try:
b%d
except NameError:
print('未定义')
except TypeError:
print('类型错误')
except ValueError:
print('值错误')
except Exception:
print('b%d,报错了')
else:
print('没有问题')
finally:
print('不管你草不报错,我都要执行')
try:
f=open('test.txt','w')
f.read()
except Exception:
print('文件操作有误')
finally:
f.close()
print(f.closed)
try:
a=input('输入数字: ')
if a.isdigit():
print('输入成功',a)
else:
raise TypeError
except Exception:
print('输入有误,请重新输入')