day18-python之迭代器和生成器
1.文件处理模式b模式
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# f=open('test.py','rb',encoding='utf-8') #b的方式不能指定编码
# f=open('test.py','rb') #b的方式不能指定编码
# data=f.read()
# #'字符串'---------encode---------》bytes
# #bytes---------decode---------》'字符串'
# print(data)
# print(data.decode('utf-8'))
# f.close() # f=open('test.py','wb') #b的方式不能指定编码
# f.write(bytes('1111\n',encoding='utf-8'))
# f.write('杨件'.encode('utf-8')) # f=open('test.py','ab') #b的方式不能指定编码
# f.write('杨件'.encode('utf-8')) # open('a;ltxt','wt')
2.读取大文件最后一行
#!/usr/bin/env python
# -*- coding:utf-8 -*-
f=open('test.txt','rb') for i in f:
offs=-3
n=0
while True:
f.seek(offs,2)
data=f.readlines()
if len(data) > 1:
print('最后一行',data[-1].decode("utf-8"))
break
offs*=2
3.文件操作的其他方法
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# f=open('a.txt','r+',encoding='utf-8')
# data=f.read()
# print(data)
# f.write('你好') # f=open('a.txt','r+',encoding='latin-1')
# data=f.read()
# print(data)
# f.write('aaaaaaaaaaa') # f=open('a.txt','r',encoding='utf-8',newline='') #读取文件中真正的换行符号
f=open('a.txt','r+',encoding='utf-8',newline='') #读取文件中真正的换行符号
#
# print(f.closed)
# print(f.encoding)
# f.flush()
# print(f.readlines()) # print(f.tell())
# f.readline()
# print(f.tell())
#
# f.seek(1)
# print(f.tell())
# print(f.readlines())
# f.seek(3)
# print(f.tell())
# print(f.read()) # data=f.read(1)
# print(data) f.truncate(10) # f.flush() #讲文件内容从内存刷到硬盘
#
# f.closed #文件如果关闭则返回True
#
# f.encoding #查看使用open打开文件的编码
# f.tell() #查看文件处理当前的光标位置
#
# f.seek(3) #从开头开始算,将光标移动到第三个字节
# f.truncate(10) #从开头开始算,将文件只保留从0-10个字节的内容,文件必须以写方式打开,但是w和w+除外
#
# f=open('a.txt','r',newline='')
#
# data=f.readline().encode('utf-8')
# print(data)
# print(f.tell()) # f=open('seek.txt','r',encoding='utf-8')
# print(f.tell())
# f.seek(10)
# print(f.tell())
# f.seek(3)
# print(f.tell()) # f=open('seek.txt','rb')
# print(f.tell())
# f.seek(10,1)
# print(f.tell())
# f.seek(3,1)
# print(f.tell()) # f=open('seek.txt','rb')
# print(f.tell())
# f.seek(-5,2)
# print(f.read())
# print(f.tell())
# f.seek(3,1)
# print(f.tell()) #
# f=open('日志文件.txt','rb')
# data=f.readlines()
# print(data[-1].decode('utf-8')) f=open('日志文件.txt','rb')
#
# for i in f.readlines():
# print(i.decode('utf-8')) #循环文件的推荐方式
# for i in f:
# print(i) for i in f:
offs=-10
while True:
f.seek(offs,2)
data=f.readlines()
if len(data) > 1:
print('文件的最后一行是%s' %(data[-1].decode('utf-8')))
break
offs*=2
4.迭代器和生成器
#!/usr/bin/env python
# -*- coding:utf-8 -*- # x='hello'
# # print(dir(x))
# iter_test=x.__iter__()
# #
# print(iter_test)
# print(iter_test.__next__())
# print(iter_test.__next__())
# print(iter_test.__next__())
# print(iter_test.__next__())
# print(iter_test.__next__())
# print(iter_test.__next__()) # l=[1,2,3]
# for i in l: #i_l=l.__iter_() i_l.__next__()
# print(i) # index=0
# while index < len(l):
# print(l[index])
# index+=1 # iter_l=l.__iter__() #遵循迭代器协议,生成可迭代对象
# print(iter_l.__next__())
# print(iter_l.__next__())
#
# for i in l:
# print(i) # s={1,2,3}
#
# # for i in s:
# # print(i)
# iter_s=s.__iter__()
# print(iter_s)
# print(iter_s.__next__())
# print(iter_s.__next__())
# print(iter_s.__next__())
# print(iter_s.__next__()) # dic={'a':1,'b':2}
# iter_d=dic.__iter__()
# print(iter_d.__next__()) # f=open('test.txt','r+')
# # for i in f:
# iter_f=f.__iter__()
# print(iter_f)
# print(iter_f.__next__(),end='')
# print(iter_f.__next__(),end='')
# l=[1,2,3,4,5]
# diedai_l=l.__iter__()
# while True:
# try:
# print(diedai_l.__next__())
# except StopIteration:
# # print('迭代完毕了,循环终止了')
# break # l=['die','erzi','sunzi','chongsunzi']
# #
# iter_l=l.__iter__()
# print(iter_l)
# print(iter_l.__next__())
# print(iter_l.__next__())
# print(iter_l.__next__())
# print(iter_l.__next__())
# print(iter_l.__next__())
# print(next(iter_l)) #next()---->iter_l.__next__() # def test():
# yield 1
# yield 2
# yield 3
# g=test()
# print('来自函数',g)
# print(g.__next__())
# print(g.__next__())
# print(g.__next__()) #三元表达式
# name='alex'
# # name='linhaifeng'
# res='SB' if name == 'alex' else '帅哥'
# print(res) #列表解析
# egg_list=[]
# for i in range(10):
# egg_list.append('鸡蛋%s' %i)
# print(egg_list) # l=['鸡蛋%s' %i for i in range(10)]
# # l1=['鸡蛋%s' %i for i in range(10) if i > 5 ]
# # l1=['鸡蛋%s' %i for i in range(10) if i > 5 else i] #没有四元表达式
# l2=['鸡蛋%s' %i for i in range(10) if i < 5] #没有四元表达式
#
# # print(l)
# # print(l1)
# print(l2) # laomuji=('鸡蛋%s' %i for i in range(10)) #生成器表达式
# print(laomuji)
# print(laomuji.__next__())
# print(laomuji.__next__())
# print(next(laomuji))
# print(next(laomuji))
# print(next(laomuji))
# print(next(laomuji))
# print(next(laomuji))
# print(next(laomuji))
# print(next(laomuji))
# print(next(laomuji))
# print(next(laomuji))
#
l=[1,2,3,34]
# map(func,l)
#
# print(sum(l))
# print(sum())
print(sum(i for i in range(10000000)))
day18-python之迭代器和生成器的更多相关文章
- python基础—迭代器、生成器
python基础-迭代器.生成器 1 迭代器定义 迭代的意思是重复做一些事很多次,就像在循环中做的那样. 只要该对象可以实现__iter__方法,就可以进行迭代. 迭代对象调用__iter__方法会返 ...
- python之迭代器与生成器
python之迭代器与生成器 可迭代 假如现在有一个列表,有一个int类型的12345.我们循环输出. list=[1,2,3,4,5] for i in list: print(i) for i i ...
- Python之迭代器和生成器
Python 迭代器和生成器 迭代器 Python中的迭代器为类序列对象(sequence-like objects)提供了一个类序列的接口,迭代器不仅可以对序列对象(string.list.tupl ...
- 【Python】迭代器、生成器、yield单线程异步并发实现详解
转自http://blog.itpub.net/29018063/viewspace-2079767 大家在学习python开发时可能经常对迭代器.生成器.yield关键字用法有所疑惑,在这篇文章将从 ...
- python的迭代器、生成器、装饰器
迭代器.生成器.装饰器 在这个实验里我们学习迭代器.生成器.装饰器有关知识. 知识点 迭代器 生成器 生成器表达式 闭包 装饰器 实验步骤 1. 迭代器 Python 迭代器(Iterators)对象 ...
- Python之迭代器,生成器
迭代器 1.什么是可迭代对象 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. from collections import Iterable l = [1,2,3,4] t ...
- python之迭代器、生成器与面向过程编程
目录 一 迭代器 二 生成器 三 面向过程编程 一.迭代器 1.迭代器的概念理解 ''' 迭代器从字面上理解就是迭代的工具.而迭代是每次的开始都是基于上一次的结果,不是周而复始的,而是不断发展的. ' ...
- day13 python学习 迭代器,生成器
1.可迭代:当我们打印 print(dir([1,2])) 在出现的结果中可以看到包含 '__iter__', 这个方法,#次协议叫做可迭代协议 包含'__iter__'方法的函数就是可迭代函数 ...
- Python之迭代器及生成器
一. 迭代器 1.1 什么是可迭代对象 字符串.列表.元组.字典.集合 都可以被for循环,说明他们都是可迭代的. 我们怎么来证明这一点呢? from collections import Itera ...
- python基础----迭代器、生成器、协程函数及应用(面向过程实例)
一.什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代 ...
随机推荐
- VLAN-1-VLAN配置
f0/12和f0/24不在列表中,因为它们动态地成为trunk,支持多个vlan “unsup”意为这个2950交换机不支持FDDI和TR 首先 switchport mode ...
- AKOJ-2037-出行方案
链接:https://oj.ahstu.cc/JudgeOnline/problem.php?id=2037 题意: 安科的夏天真是不一般的热,避免炎热,伍学长因此想为自己规划一个校园出行方案,使得从 ...
- 530 Minimum Absolute Difference in BST 二叉搜索树的最小绝对差
给定一个所有节点为非负值的二叉搜索树,求树中任意两节点的差的绝对值的最小值.示例 :输入: 1 \ 3 / 2输出:1解释:最小绝对差为1,其中 2 和 1 的差的绝对值为 ...
- Python临时笔记
动态语言python的特性 python2 输入一个匿名函数直接执行 # coding=utf-8 def Test(a, b, func): result = func(a, b) return ...
- SpringMVC和Spring的配置文件扫描包详解
在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器有上下层关系,目前最常见的一种场景 ...
- js实现接口的几种方式
Javascript模仿接口可以有三种方式:1.注释法 2.检查属性法 3.鸭式辨形法 1.注释法:此方法属于程序文档范畴,对接口的继承实现完全依靠程序员自觉 /* interface People{ ...
- 总结React关于require的问题
我需要实现的是当登录页面传过来的sex值为1则性别一栏的图片修改为boy.png如果为0性别图片则显示为girl.png‘ 最开始是这么写的为了让他成为变量 所以不行ok我们回到React的生命周期函 ...
- BBS项目需求分析及表格创建
1.项目需求分析 1.登陆功能(基于ajax,图片验证码) 2.注册功能(基于ajax,基于forms验证) 3.博客首页 4.个人站点 5.文章详情 6.点赞,点踩 7.评论 --根评论 --子评论 ...
- 2018百度之星初赛(A)2 度度熊学队列
思路: 记录一下c++ stl中的双向链表list的各种用法. https://blog.csdn.net/fanyun_01/article/details/56881515 实现: #includ ...
- 1099 字串变换 2002年NOIP全国联赛提高组
1099 字串变换 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 已知有 ...