美文网首页
09 python 中文件的读写操作

09 python 中文件的读写操作

作者: 小码码 | 来源:发表于2018-07-12 15:49 被阅读71次

    1 只读模式 r

    • 常用的内置函数
    f=open('ceshi','r', encoding='utf-8')   #打开的编码方式与文件本身的编码方式不一致时,会出现乱码
    data=f.read()            #读取文件内容
    f.seek(0)                  #光标位置移到文件开头
    print(f.writable())      #判断是否可写,只读模式文件不可写  False
    print(f.readable())     #判断是否可读  True
    print(f.readline())      #读取一行
    print(f.readlines())    #读取文件所有的行,存在列表里面    ['会哈哈哈\n', '你看看扩扩\n', '下回合骄傲\n', '还行哈哈仅仅还是\n', '不能仅仅是对\n', '事件等级感觉对对对\n', '爱无畏\n', '为呼吸道萨克斯\n', '一起去哦哦亲亲\n', '爱很简单股权工业']
    print(f.tell())       #光标当前位置  204
    f.close()         #关闭文件,以open方式打开的文件,都需要手动关闭
    print(f.closed)       #True   判断文件是否关闭
    
    • seek函数
    f=open('ceshi','r', encoding='utf-8')
    f.seek(3,0)   #从头开始,光标移动3个字节
    f.seek(3,1)   ##从光标的当前位置开始,光标移动3个字节
    f.seek(-3,2)   #从末尾开始计算,截取3个字节
    

    seek()函数中的第一个参数代表光标移动的字节数,第二个参数表示如何移动,其中0——从头开始 1——从当前位置开始 2——从文件末尾开始

    2 只写模式 w

    f=open('ceshi','w', encoding='utf-8')  # w在写入新的内容前,会清空文件中的原有内容
    print(f.readable())    #False
    print(f.read())      #报错UnsupportedOperation: not readable
    print(f.writable())   #True
    f.write('111111\n')
    f.write('333\n444\n555\n')
    f.writelines(['666\n','777\n'])
    f.writelines(['666\n','777\n',1])      #报错TypeError: write() argument must be str, not int,文件的写和读都是以string的方式进行
    print(f.encoding)     #查看文件打开的方式
    

    3 追加的方式打开

     f=open('ceshi','a', encoding='utf-8')   #追加的方式写入,新写的内容会在文件末尾
    f.write('新加的内容')
    

    4 可读可写模式

    • r+ 模式
    f=open('ceshi','r+', encoding='utf-8')    #可读可写的方式
    print(f.readable())        #True
    print(f.writable())        #True
    f.write('可读可写')     #从光标所在的位置开始写入
    print(f.closed)         #False
    
    • a+模式
      可读,写的内容会在文件末尾
    • w+ 模式
      可读可写,写之前会清空原有内容

    5 rb和wb模式

    以字节的方式读和以字节方式写

    # rb模式
    f=open('ceshi','rb')      #以字节b的方式打开,不能指定encoding方式,会报错
    data=f.read()
    print(data)   # b'\xe7\x94\xa8with\xe7\x9a\x84\xe6\x96\xb9\xe5\xbc\x8f\xe6\x89\x93\xe5\xbc\x80\xe8\xaf\xbb\xe5\x8f\xaf\xe5\x86\x99\r\n777\r\n\xe6\x96\xb0\xe5\x8a\xa0\xe7\x9a\x84\xe5\x86\x85\xe5\xae\xb9'
    print(data.decode('utf-8'))   
    
    # wb模式
    f=open('ceshi','wb')
    # f.write('999\n')          #TypeError: a bytes-like object is required, not 'str'
    f.write(bytes('你好\n',encoding='utf-8'))   #你好
    

    读取文件最后一行示例

    with open('ceshi','rb') as f:
        offs=-10
        while True:
            f.seek(offs,2)
            data=f.readlines()     #list类型
            if len(data)>1:
                print('文件最后一行是:%s'%(data[-1].decode('utf-8')))
                break
            offs*=2
    

    相关文章

      网友评论

          本文标题:09 python 中文件的读写操作

          本文链接:https://www.haomeiwen.com/subject/vesbuftx.html