• Pyhton学习——Day9


    #文件操作的其他方法

    ##############################################################################
    #文件的内置操作函数
    # 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
    Win a contest, win a challenge
  • 相关阅读:
    MFC 中 Tooltip 实现的几种方式
    C++11带来的优雅语法
    socket异步编程--libevent的使用
    单元测试与解耦
    Ubuntu(Linux) + mono + jexus +asp.net MVC3
    常见算法总结
    NET里简易实现AOP
    KMP算法
    简易的集群通讯组件
    数据访问层的封装与抽象
  • 原文地址:https://www.cnblogs.com/pandaboy1123/p/8457942.html
Copyright © 2020-2023  润新知