第七节:迭代器和生成器

f.read(3)代表读取3个字符,如果是b模式打开的文件,则是读取三个字节
f.flush将文件从内存刷到硬盘
f.closeed文件如果关闭则返回True
f.encoding查看使用open打开文件的编码


tell查看光标位置
seek移动光标
truncate截断文件
0模式,从开头开始移动光标位置,默认模式就是0,以r模式打开就行
1模式,从上一次的光标位置开始移动(要以rb的方式读 文件)f.seek(10,1)
2模式,从文件末尾开始倒着移动光标f.seek(-10,2),注意windows行尾有\r\n,多用在写日志文件的时候

循环文件的方式:
for i in f:这样用到的时候才会读到内存中
for i in f.readlines():这样是是把文件所有内容读到内存中
for i in f:
f.seed(-3,2)

迭代器
递归:自己调用自己,将处理结果不断地传递给自己处理,直到得到最终结果
可迭代对象:更新换代,每次得到的结果都是基于上一次
for循环的机制(很重要)
while循环模拟for循环的工作机制
li = [1,2,3,4,5]
li_iter=li.__iter__()
while True:
try:
print(li_iter.__next__())
except StopIteration:
print("迭代完毕,终止打印")
break

生成器:就是可迭代对象,不需要通过_iter_()进行转换,直接调用方法_next_()
生成器函数:函数族后yiel代替return,可以yield多从,retrun只可以一次
列表解析:[ 'bb%s' %i for i in range(10) ],三元表达式规则,把[]换成()就变成了生成器表达式

三元表达式:
"sd" if name == "sdd" else "sb"
一元 二元 三元

列表解析:
[ 'bb%s' %i for i in range(10) ] 生成列表,数值较大的时候会占用内存

猜你喜欢

转载自www.cnblogs.com/sxdpython/p/12657134.html