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) #读取文件的内容,将文件的内容以字符串形式返回。
'''size是可选的数值,指定字符串长度,如果没有指定size或者指定为负数,就会读取并返回整个文件。当文件大小为当前机器内存两倍时就会产生问题,反之就尽可能大的size读取和返回数据,如果到了文件末尾,会返回空字符串。
'''
f.readline() #从文件中读取单独一行。
'''字符串结尾会自动加上一个换行符\n,只有当文件最后没有以换行符结尾时,这一操作才会被忽略,这样返回值就不会有混淆。如果返回空字符串,表示到达率文件末尾,如果是空行,就会描述为\n,一个只有换行符的字符串。
'''
f.readlines() #一次读取所有,返回一个列表,列表的元素为文件行的内容。
'''可以通过列表索引的方式将文件的每一行的内容输出。
可以通过for循环迭代输出每一行的信息。
'''
#4.文件的写入
f.write() #将要写入的内容以字符串的形式通过write方法写入文件中。
f.writelines() #括号里必须是由字符串元素组成的序列。
#5.保存和关闭
f.flush()
#在读写模式下,当写完的数据想要读取出来时,要先缓存区的内容保存到文件当中。
f.close()
#关闭文件。对一个已经关闭的文件进行操作会报错。
#6.光标位置
f.tell() #返回光标在文件中的位置。
f.seek(offset,from) #常用 f.seek(0) 返回起始位置
#在文件中移动文件指针,从from(0代表起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节。
# 常用 f.seek(0,0) 返回起始位置。 其他了解一下
#7.查看文件信息
closed #查看文件是否已经关闭,返回布尔值。
mode #返回文件打开模式。
name #返回文件名。
#8.with 形式打开文件,里面的语句执行完后会自动关闭文件
with open('文件名') as f:
f.read()
2.异常语法
try:
suite1 #测试语句块
except exception1:
suite2 #如果测试语句suite1中发生exception1异常时执行
except (exception2,exception3):
suite3 #如果测试语句suite1中发生元组中任意异常时执行
except exception4 as reason: #as把异常的原因赋值给reason
suite4 #如果测试语句suite1发生exception4的异常时执行
except:
suite5 #如果测试语句suite1发生异常在所列出的异常之外时执行
else:
suite5 #如果测试语句块suite1中没有发生异常时执行
finally:
suit6 #不管测试语句suite1中又没有发生异常都会执行
'''
注意:中间的except,else,finally都是可选的,但至少有一个,不然try就没有意义了,根据实际中的需求来选择。
所有错误类型都继承自BaseException
https://docs.python.org/3/library/exceptions.html#exception-hierarchy
'''
#注意:如果抛出父类异常,在子类不会再获取,如下:
try:
fun()
except Exception as e:
raise Exception
except ImportError as e:
raise ImportError
finally:
pass
'''
在上面的例子中,下面的ImportError就不会被抛出,应为ImportError继承Exception,但是可以把Exception放在后面是可以的
e可以得到系统给出的报错信息
'''
assert #断言
'''
测试表示式,其返回值为假,就会触发异常
'''
assert 1==1 #没有返回值
assert 1==2 #返回AssertionError
作业:
#1.打开文件,修改内容,写入另一个文件。
# 把文件reform.txt中的名人名言改成“某某说:......”的形式,保存到另一个文件中。
'例:雨果说:大胆是取得进步所付出的代价。'
def change_flie():
f = open('reform.txt','r')
f2 = open('new.txt','w+')
li = f.readlines()
li = li[::2]
for i in li:
# print(i)
a,b = i.split('——')
b = b.replace('\n','')
print(b + '说:"' + a + '"\n\n' )
f2.writelines(b + '说:"' + a + '"\n\n')
f.close()
f2.close()
#1.打开文件,修改内容,写入另一个文件。# 把文件reform.txt中的名人名言改成“某某说:......”的形式,保存到另一个文件中。'例:雨果说:大胆是取得进步所付出的代价。' def change_flie(): f = open('reform.txt','r') f2 = open('new.txt','w+') li = f.readlines() li = li[::2] for i in li: # print(i) a,b = i.split('——') b = b.replace('\n','') print(b + '说:"' + a + '"\n\n' ) f2.writelines(b + '说:"' + a + '"\n\n') f.close() f2.close()
#2. 捕捉用户输入时异常,确保程序正常执行import random def test(): n = random.randint(1,10) c = 0 while c<3: a = input('您还有 %d 次机会,请输入1-10 整数:'%(3-c)) try: a = int(a) if 1<=a<=10: if a==n: print('猜对啦') break elif a < n: print('小啦') else: print('大啦') else: print('输入错误!!!') raise TypeError('输入错误!!!') c = c-1 except ValueError: print('老铁,请输入1-10的整数,不然不给玩') c = c-1 c += 1 if c==3: t=input('您的机会已经用尽,是否还继续 (y:继续 任意键: 结束): ') if t=='y': c = 0