当前位置:
首页 > Python基础教程 >
-
python基础教程之day18-python之迭代器和生成器
1.文件处理模式b模式
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # f=open('test.py','rb',encoding='utf-8') #b的方式不能指定编码 4 # f=open('test.py','rb') #b的方式不能指定编码 5 # data=f.read() 6 # #'字符串'---------encode---------》bytes 7 # #bytes---------decode---------》'字符串' 8 # print(data) 9 # print(data.decode('utf-8')) 10 # f.close() 11 12 13 # f=open('test.py','wb') #b的方式不能指定编码 14 # f.write(bytes('1111\n',encoding='utf-8')) 15 # f.write('杨件'.encode('utf-8')) 16 17 # f=open('test.py','ab') #b的方式不能指定编码 18 # f.write('杨件'.encode('utf-8')) 19 20 # open('a;ltxt','wt')
2.读取大文件最后一行
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 f=open('test.txt','rb') 4 5 for i in f: 6 offs=-3 7 n=0 8 while True: 9 f.seek(offs,2) 10 data=f.readlines() 11 if len(data) > 1: 12 print('最后一行',data[-1].decode("utf-8")) 13 break 14 offs*=2
3.文件操作的其他方法
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # f=open('a.txt','r+',encoding='utf-8') 4 # data=f.read() 5 # print(data) 6 # f.write('你好') 7 8 # f=open('a.txt','r+',encoding='latin-1') 9 # data=f.read() 10 # print(data) 11 # f.write('aaaaaaaaaaa') 12 13 # f=open('a.txt','r',encoding='utf-8',newline='') #读取文件中真正的换行符号 14 f=open('a.txt','r+',encoding='utf-8',newline='') #读取文件中真正的换行符号 15 # 16 # print(f.closed) 17 # print(f.encoding) 18 # f.flush() 19 # print(f.readlines()) 20 21 # print(f.tell()) 22 # f.readline() 23 # print(f.tell()) 24 # 25 # f.seek(1) 26 # print(f.tell()) 27 # print(f.readlines()) 28 # f.seek(3) 29 # print(f.tell()) 30 # print(f.read()) 31 32 # data=f.read(1) 33 # print(data) 34 35 f.truncate(10) 36 37 38 # f.flush() #讲文件内容从内存刷到硬盘 39 # 40 # f.closed #文件如果关闭则返回True 41 # 42 # f.encoding #查看使用open打开文件的编码 43 # f.tell() #查看文件处理当前的光标位置 44 # 45 # f.seek(3) #从开头开始算,将光标移动到第三个字节 46 # f.truncate(10) #从开头开始算,将文件只保留从0-10个字节的内容,文件必须以写方式打开,但是w和w+除外 47 # 48 # f=open('a.txt','r',newline='') 49 # 50 # data=f.readline().encode('utf-8') 51 # print(data) 52 # print(f.tell()) 53 54 55 56 57 58 59 60 # f=open('seek.txt','r',encoding='utf-8') 61 # print(f.tell()) 62 # f.seek(10) 63 # print(f.tell()) 64 # f.seek(3) 65 # print(f.tell()) 66 67 # f=open('seek.txt','rb') 68 # print(f.tell()) 69 # f.seek(10,1) 70 # print(f.tell()) 71 # f.seek(3,1) 72 # print(f.tell()) 73 74 75 # f=open('seek.txt','rb') 76 # print(f.tell()) 77 # f.seek(-5,2) 78 # print(f.read()) 79 # print(f.tell()) 80 # f.seek(3,1) 81 # print(f.tell()) 82 83 84 85 86 87 88 89 90 # 91 # f=open('日志文件.txt','rb') 92 # data=f.readlines() 93 # print(data[-1].decode('utf-8')) 94 95 f=open('日志文件.txt','rb') 96 # 97 # for i in f.readlines(): 98 # print(i.decode('utf-8')) 99 100 #循环文件的推荐方式 101 # for i in f: 102 # print(i) 103 104 for i in f: 105 offs=-10 106 while True: 107 f.seek(offs,2) 108 data=f.readlines() 109 if len(data) > 1: 110 print('文件的最后一行是%s' %(data[-1].decode('utf-8'))) 111 break 112 offs*=2
4.迭代器和生成器
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 5 6 # x='hello' 7 # # print(dir(x)) 8 # iter_test=x.__iter__() 9 # # 10 # print(iter_test) 11 # print(iter_test.__next__()) 12 # print(iter_test.__next__()) 13 # print(iter_test.__next__()) 14 # print(iter_test.__next__()) 15 # print(iter_test.__next__()) 16 # print(iter_test.__next__()) 17 18 # l=[1,2,3] 19 # for i in l: #i_l=l.__iter_() i_l.__next__() 20 # print(i) 21 22 # index=0 23 # while index < len(l): 24 # print(l[index]) 25 # index+=1 26 27 28 # iter_l=l.__iter__() #遵循迭代器协议,生成可迭代对象 29 # print(iter_l.__next__()) 30 # print(iter_l.__next__()) 31 # 32 # for i in l: 33 # print(i) 34 35 # s={1,2,3} 36 # 37 # # for i in s: 38 # # print(i) 39 # iter_s=s.__iter__() 40 # print(iter_s) 41 # print(iter_s.__next__()) 42 # print(iter_s.__next__()) 43 # print(iter_s.__next__()) 44 # print(iter_s.__next__()) 45 46 # dic={'a':1,'b':2} 47 # iter_d=dic.__iter__() 48 # print(iter_d.__next__()) 49 50 # f=open('test.txt','r+') 51 # # for i in f: 52 # iter_f=f.__iter__() 53 # print(iter_f) 54 # print(iter_f.__next__(),end='') 55 # print(iter_f.__next__(),end='') 56 # l=[1,2,3,4,5] 57 # diedai_l=l.__iter__() 58 # while True: 59 # try: 60 # print(diedai_l.__next__()) 61 # except StopIteration: 62 # # print('迭代完毕了,循环终止了') 63 # break 64 65 # l=['die','erzi','sunzi','chongsunzi'] 66 # # 67 # iter_l=l.__iter__() 68 # print(iter_l) 69 # print(iter_l.__next__()) 70 # print(iter_l.__next__()) 71 # print(iter_l.__next__()) 72 # print(iter_l.__next__()) 73 # print(iter_l.__next__()) 74 # print(next(iter_l)) #next()---->iter_l.__next__() 75 76 77 78 79 80 81 82 83 84 85 # def test(): 86 # yield 1 87 # yield 2 88 # yield 3 89 # g=test() 90 # print('来自函数',g) 91 # print(g.__next__()) 92 # print(g.__next__()) 93 # print(g.__next__()) 94 95 #三元表达式 96 # name='alex' 97 # # name='linhaifeng' 98 # res='SB' if name == 'alex' else '帅哥' 99 # print(res) 100 101 102 #列表解析 103 # egg_list=[] 104 # for i in range(10): 105 # egg_list.append('鸡蛋%s' %i) 106 # print(egg_list) 107 108 # l=['鸡蛋%s' %i for i in range(10)] 109 # # l1=['鸡蛋%s' %i for i in range(10) if i > 5 ] 110 # # l1=['鸡蛋%s' %i for i in range(10) if i > 5 else i] #没有四元表达式 111 # l2=['鸡蛋%s' %i for i in range(10) if i < 5] #没有四元表达式 112 # 113 # # print(l) 114 # # print(l1) 115 # print(l2) 116 117 # laomuji=('鸡蛋%s' %i for i in range(10)) #生成器表达式 118 # print(laomuji) 119 # print(laomuji.__next__()) 120 # print(laomuji.__next__()) 121 # print(next(laomuji)) 122 # print(next(laomuji)) 123 # print(next(laomuji)) 124 # print(next(laomuji)) 125 # print(next(laomuji)) 126 # print(next(laomuji)) 127 # print(next(laomuji)) 128 # print(next(laomuji)) 129 # print(next(laomuji)) 130 # 131 l=[1,2,3,34] 132 # map(func,l) 133 # 134 # print(sum(l)) 135 # print(sum()) 136 print(sum(i for i in range(10000000)))
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式