zoukankan      html  css  js  c++  java
  • day18 文件处理b(byte)模式

    文件处理的byte模式

    f=open('test2.py')函数默认是‘rb’模式,即为读取模式;

    #读取一个byte模式的文件 rb
    f=open('test2.py','rb')#前提是存在这个可操作的对象
    data=f.read()
    print(data)#打印出来的是byte二进制的模式;
    print(data.decode('utf-8'))#按照utf-8进行编码后的打印
    f.close()

    #byte模式写入文档内容的操作 wb

    f=open('test2.py','wb')
    f.write(bytes('aaaa
    ',encoding='utf-8'))#方法一
    f.write('山东省'.encode('utf-8'))#方法二

    #byte模式追加文档内容的操作 ab

    f=open('test2.py','ab')
    f.write('泰安市'.encode('utf-8'))

    #文件拷贝工具  rb+wb

    with open('test2.py','rb') as f1,open('test3.py','wb') as f2:
        res = f1.read()
        f2.write(res)

    w模式下while循环读文件,readline(一次只能读一行)

    with open(r'g.txt',mode='rt',encoding='utf-8') as f:
        res1=f.readline()
        res2=f.readline()
        print(res2)
    #使用while循环读取
        while True:
            line=f.readline()
            if len(line) == 0:
                break
            print(line)

    b模式下,一次性多行读写。存为列表形式。readlines

    with open(r'g.txt',mode='rt',encoding='utf-8') as f:
        res=f.readlines()
        print(res)

    read是按照文件内容直接读出,readlines是将文件内容以列表的形式读出

    了解:

    with open('../../../../Desktop/Python课堂笔记/day12笔记/h.txt', mode='wt', encoding='utf-8') as f:
        print(f.readable())      判断文件是否可读
        print(f.writable())     判断文件是否可写
        print(f.encoding)        格式,如‘utf-8,’如果文件打开属性为b,则没有该属性
        print(f.name)            输出绝对路径
    
    print(f.closed)           判断文件是否关闭

    f.closed

    f.encoding 

    f.flush #立即写入硬盘

    f.tell # 获取文件指针当前位置

    f.readlines

    f.seek #指针的移动,使用b的方式操作

    模式0,即b=0,参照物是文件开头位置,

    模式1,即b=1,参照物是当前指针位置,

    模式2,即b=2,参照物是文件结尾

    f.truncate #截断

    练习:

    实现动态时刻更新日志的效果

    import time
    with open('acess.log',mode='rb')as f:
        f.seek(0,2)
        while 1:
            line = f.readline()
            if len(line) ==0:
                time.sleep(0.3)
            else:
                print(line.decode('utf-8'),end=)

     使用seek移动光标读取文件最后一行内容

    f= open('test2.py','rb')
    for i in f:
        offset = -2
        n = 0
        while True:
            f.seek(offset,2) #移动光标到倒数第‘offest’个字节
            lis = f.readlines()#读取当前光标下,后续的数行内容,输出为列表
            if len(lis) >1:#判断当前读取出的列表长度是否是大于1
                print('最后一行内容是:',lis[-1].decode('utf-8'))#打印最后一行内容
                break
            else:
                offset*=2 #光标距离最后一个位置自增2倍
  • 相关阅读:
    使用JDBC连接MySql时出现:The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration
    Mysql Lost connection to MySQL server at ‘reading initial communication packet', system error: 0
    mysql-基本命令
    C# 监听值的变化
    DataGrid样式
    C# 获取当前日期时间
    C# 中生成随机数
    递归和迭代
    PHP 时间转几分几秒
    PHP 根据整数ID,生成唯一字符串
  • 原文地址:https://www.cnblogs.com/douyunpeng/p/12691722.html
Copyright © 2011-2022 走看看