zoukankan      html  css  js  c++  java
  • 18.函数复习,文件处理b模式(二进制处理),文件处理其他高级玩法

    1.函数复习

    # map
    # l = [1,2,3,4,5]
    # print(list(map(str,l)))
    
    # reduce
    # l = [1,2,3,4,5]
    # from functools import  reduce
    # print(reduce(lambda x,y:x+y,l,3))  #初始值是3.
    
    # filter
    # name=['ray_sb','ray']
    # res=filter(lambda x:x.endswith('sb'),name)
    # # res=filter(lambda x:not x.endswith('sb'),name) #不包含
    # print(res)
    # print(list(res))

    2.文件处理b模式(二进制处理)

    1.文件默认处理是文本方式,但是视频,图片之类的只能用二进制处理
    2.文件最终处理方式是二进制,所以二进制可以跨平台
    3.b模式对linux没什么用,因为linux就是二进制处理,对windows有用

    # f=open('test11.py','rb',encoding='utf-8') #b的方式不能指定编码
    # f=open('test11.py','rb') #b的方式不能指定编码
    # data=f.read()
    # 编码:'字符串'---------encode---------》bytes
    # 解码:bytes---------decode---------》'字符串'
    # print(data)
    # print(data.decode('utf-8'))
    # f.close()
    
    # f=open('test22.py','wb') #b的方式不能指定编码
    # f.write(bytes('1111
    ',encoding='utf-8'))
    # f.write('星空月零'.encode('utf-8'))
    
    # f=open('test22.py','ab') #b的方式不能指定编码
    # f.write('星空月零'.encode('utf-8'))
    
    # open('a;ltxt','wt')
    # 1.文件默认处理是文本方式,但是视频,图片之类的只能用二进制处理
    # 2.文件最终处理方式是二进制,所以二进制可以跨平台
    # 3.b模式对linux没什么用,因为linux就是二进制处理,对windows有用

     3.文件操作其他方法

    # f.flush() #讲文件内容从内存刷到硬盘
    #
    # f.closed #文件如果关闭则返回True
    #
    # f.encoding #查看使用open打开文件的编码
    # f.tell() #查看文件处理当前的光标位置
    #
    # f.seek(3) #从开头开始算,将光标移动到第三个字节
    # f.truncate(10) #从开头开始算,将文件只保留从0-10个字节的内容,文件必须以写方式打开,但是w和w+除外

    用seek方法的相对模式时必须以b的方式打开

    # 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())

    文件读取

    因为readlines()是把文件从头读到尾,耗费资源,所以用循环的方式好。

    # f=open('日志文件','rb')
    # data=f.readlines()
    # print(data[-1].decode('utf-8'))
    
    f=open('日志文件','rb')
    
    # for i in f.readlines():
    #     print(i)
    
    #循环文件的推荐方式
    # for i in f:
    #     print(i)

    文件读取demo:读取日志文件的最后一行

    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
  • 相关阅读:
    GNU Linux中的SO_RCVLOWAT和SO_SNDLOWAT说明
    Spring.NET 的IOC(依赖注入)
    c# post 数据的方法
    C# .NET中的 反射的应用
    C# .NET修改注册表
    DataTabel DataSet 对象 转换成json
    sqlserver 行转列
    asp.net 二级域名session共享
    Asp.Net集群中Session共享
    微软企业库DBBA的研究
  • 原文地址:https://www.cnblogs.com/raitorei/p/11923406.html
Copyright © 2011-2022 走看看