zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    orm 对象关系映射 指 表与类之间的映射 # 40
    事务 视图 触发器 函数 (内置) 存储过程 流程控制 索引 # 39
    exist 存在 Python操作mysql pymysql sql注入问题 # 38
    基本查询语句与方法 多表查询 # 37
    外键 #36
    存储引擎 索引 数据类型 约束条件 # 35
    mysql安装 登录 修改密码 库,表,记录(增删改查) # 34
    进程池和线程池 协程 # 33
    GIL全局解释器锁
    # 并发编程 -进程理论-进程的方法
  • 原文地址:https://www.cnblogs.com/pandaboy1123/p/8457942.html
Copyright © 2011-2022 走看看