#文件操作的其他方法

##############################################################################
#文件的内置操作函数
# 1.closed 查看文件是否是关闭的状态,输出为布尔值,关闭的为True,未关闭的为False
# 2.encoding表示编码的形式,函数方法打开的编码形式
# print(f.encoding)
# cp936
#************************************************************************
#不知道文件编码是什么形式的情况下,还是要写文件或读文件的信息,处理办法:
#用拉丁文的方式打开文件latin-1
# f = open('test','r+',encoding='latin-1')#尽可能多的保留数据
# data = f.read()
# print(data)
# f.write('aaaaaaaa')
#文件的编码获取的是系统的默认编码
# f = open('test','r+',encoding='UTF-8')
# f.flush()#刷新,使用这个命令就会保存文件
# f.isatty()#终端设备
# print(f.tell())
# f.readline()
# f.readline()
# print(f.tell())#光标的当前位置
#newline=''就是不要python自带的屏蔽参数
#文件内光标的移动:除了read()代表读取3个字符,其余的文件内光标的移动都是以字节为单位,如seek、tell、read
# f.seek(3)
# print(f.read())
# 456
# 789
# opqsdasdnagaaaaaaaaaaaaaaaa
# print(f.read(5))
# 123
# 4
# f.truncate(10)#文件截断,属于文件的切割写操作
# print(f.truncate(10))
#####################################################################
# f = open('test','rb')
# print(f.tell())
# f.seek(10)
# print(f.tell())
# f.seek(3)
# print(f.tell())
#seek的移动光标默认是从0的位置开始移动
#############################################################
#seek的几种用法
#1.必须为'rb'模式才可以使用
#参数1为接指定上一次光标后的位置
#参数2为倒序,从结尾开始的光标,前面的顺序必须为负数的形式
# print(f.tell())
# f.seek(-1,2)
# print(f.tell())
# f.seek(3,1)
# print(f.tell())
#################################################################################################################
#高端玩法:打开大文件的最后一行
# f = open('test','rb')
# for i in f:
# offs = -5#偏移量需要自己估计,最后一行大约有多少个字节
# while True:#做一个死循环
# f.seek(offs,2)
# rows = f.readlines()#从当前光标位置开始读取一行的所有内容
# if len(rows) > 1:#如果文件读取的行数超过1行,则打印最后一行
# print('文件的最后一行是%s'%(rows[-1].decode('UTF-8')))
# break
# offs*=2
# 文件的最后一行是+---------------------------------------------------------------------------+
#***************************************************************************************************************#
# 什么是递归?
# 函数自己调用自己的方法就是递归
# 什么是迭代?
# 可以被for循环遍历的,每次循环得到的结果都是上一次的结果得出的
# 什么是迭代器协议?
# 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个Stoplteration异常,
# 以终止迭代(只能往后不能往前退)
# 2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个_iter_()方法)
# 3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环、sum、min、max函数等)使用迭代器协议访问对象
# l = [1,2,3,4]
# for i in l:
# print(i)
######################Python的for循环机制##########################################################
# for循环的本质:循环所有的对象,全都是使用迭代器协议
#(字符串、列表、元祖、字典、集合、文件对象)这些都不是可迭代对象,只不过在for循环式,调用了内部的_iter_方法,变成了可迭代对象
# 然后for循环调用可迭代对象的_next_方法去取值,而且for循环会捕捉Stoplteration异常,以终止迭代
# l = [1,2,3,4]
# for i in l: #1.先执行_iter_(),再执行next方法
# print(i) #捕捉了异常,不再迭代
# l = [1,2,3,4]
# iter = l.__iter__()#遵循迭代器协议,生成可迭代对象
# print(iter.__next__())
# print(iter.__next__())
# print(iter.__next__())
# print(iter.__next__())
# l = [1,2,3,4]
# index = 0
# while index<len(l):
# print(l[index])
# index+=1
# 1
# 2
# 3
# 4

Pyhton学习——Day9的更多相关文章

  1. Pyhton学习——Day9(阶段性练习)

    # 1.文件内容如下,标题为:姓名,性别,年纪,薪资## egon male 18 3000# alex male 38 30000# wupeiqi female 28 20000# yuanhao ...

  2. Pyhton学习——Day26

    #多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...

  3. pyhton 学习

    官方学习文档 https://docs.python.org/3/tutorial/

  4. python学习day9

    目录 一.队列 二.生产者消费者模型 三.协程 四.select\poll\epoll 五.paramiko 六.mysql API调用 一.队列(queue) 队列分以下三种: class queu ...

  5. 20190320_head first pyhton学习笔记之构建发布

    1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...

  6. python学习Day9 内存管理

    复习 :文件处理 1. 操作文件的三步骤:-- 打开文件:此时该文件在硬盘的空间被操作系统持有 |  文件对象被应用程序持用 -- 操作文件:读写操作 -- 释放文件:释放操作系统对文件在硬盘间的持有 ...

  7. Python学习-day9 线程

    这节内容主要是关于线程的学习 首先要了解的什么是进程,什么是线程 进程与线程 什么是进程(process)? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称 ...

  8. Pyhton学习——Day2

    Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...

  9. Pyhton学习——Day28

    #上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...

随机推荐

  1. day25-3 json,pickle模块

    目录 json 序列化 反序列化 pickle json json文件并不是python独有的,所有的语言都有json,可以跨平台/语言传输数据 json文件中只能写入python中的dict/lis ...

  2. mysql修改时区的几种方法(转载自https://www.cnblogs.com/shiqiangqiang/p/8393662.html)

    说明: 以下记录修改mysql时区的几种方法. 具体: 方法一:通过mysql命令行模式下动态修改 1.1 查看mysql当前时间,当前时区 select curtime(); #或select no ...

  3. css定位!如何将两个表格并排排列!

    直接创建两个div,之后设置每个占页面的一般,设置左对齐即可.<div style="width:50%;hight:100%;float:left:"><for ...

  4. 慎用PHP的unset、array_unique方法

    背景 在日常工作中,可能会经常遇到一些PHP的代码场景,需要我们去除数组中的某个项,通常会直接调用unset方法,但是如果用得不妥,会给自己挖坑 1.实操 以下使用具体例子进行证明假设有数组如下值: ...

  5. 小松之LINUX 驱动学习笔记(开篇)

    时间对每个人都是公平的,就看你怎么对待他.每天多努力一点,未来就会轻松一点.作为一名北漂,感受着首都的压力,也曾萌生过逃离北上广的想法,但是,最后我最终还是选择留下来,随着年龄的增长,我已经没有那么多 ...

  6. linux_ubuntu 连接xftp

    一.修改静态ip 打开网络配置文件 :vim /etc/network/interfaces 1.添加以下配置: 注意:ubuntu 网卡名为 ens33 .多数liunx系统的网卡名为eth0. 可 ...

  7. 工具-docker01

  8. TeamTalk Android代码分析(业务流程篇)---消息发送和接收的整体逻辑说明

    第一次纪录东西,也没有特别的顺序,想到哪里就随手画了一下,后续会继续整理- 6.2消息页面动作流程 6.2.1 消息页面初始化的总体思路 1.页面数据的填充更新直接由页面主线程从本地数据库请求 2.数 ...

  9. Android调用第三方App

    private List<Map<String, Object>> list = null; private PackageManager mPackageManager; p ...

  10. 【解决】run-as: Package &#39;&#39; is unknown

    问题: [2014-07-30 20:20:25 - nativeSensorStl] gdbserver output: [2014-07-30 20:20:25 - nativeSensorStl ...