• Python中的文件操作——09


    open方法打开文件,r,只可读模式,不能写,文件的内容只能是字符串

    f = open('xxx','r','encoding='utf-8')
    data = f.read()#以字符串形式读取整个文件
    data1 = f.readlines()#列表的形式,每行为一个元素
    f.close()
    print(f1.readable()) #判断是否可读,返回bool值


    w,只写模式,不能读

    f = open('xxx','w',encoding='utf-8')#如果存在xxx文件则覆盖,如果不存在xxx文件则新建
    f.write('dsadasd')
    f.write('dsdsadaw1')#当多行write写入时需要自己加上
    换行,否则不会换行
    f.writelines(['dsadad3
    ','dsaasda
    ','dasda
    '])#写入一个列表行
    f.close()

    a,追加模式,只追加内容,在文件的最后开始写

    f = open('xxx','a',encoding='utf-8')
    f.write('winsdom')
    f.close()#追加模式   写在原文件的最后

    b,对于非文本文件,我们只能使用b模式,‘b’表示以字节的方式操作(所有的文件也都是以字节飞形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jpg格式、视频文件的avi格式)

    rb

    wb

    ab

    补充:以b的方式打开文件时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

    ‘+’ 表示可以同时读写某个文件

    ‘r+’  读写(可读,可写)

    ‘w+’  写读(可读,可写)

    ‘a+’  写读(可读,可写)

    ‘x’  只写模式(不可读,不存在创建,存在则报错)

    ‘x+’  写读(可读,可写)

    ‘xb’

    操作文件的方法

    f.read()         #读取所有内容,光标移动到文件末尾
    f.readline()    #读取一行内容,光标移动到第二行首部
    f.readlines()    #以列表的形式读取全部内容(读取每一行,存放于列表中)
    
    
    f.write('11111
    22222
    ')    #针对文本模式的写,需要自己写换行符
    f.write('1111
    2222
    '.encode('utf-8'))    #针对b模式的写,需要自己写换行符
    f.writelines(['333
    ','444
    '])    #文件模式的多行写入
    f.writelines('333
    ',encoding='utf-8'),'444
    '.encode('utf-8')])    #b模式
    
    f.readable()#判断文件是否可读
    f.writable()#判断文件是否可写
    f.closed#判断文件是否关闭
    f.encoding#如果文件打开模式为b,则没有该属性
    f.flush#立刻将文件内容从内存刷到硬盘
    f.name        

    文件中的光标移动

    read(3)

    1、文件打开方式为文本模式时,代表读取3个字符

    2、文件打开方式为b模式时,代表读取3个字节

    seek,tell,truncate

    1、seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

    2、truncate是截断文件,所以文件的打开方式必须是可写,但是不能用w或w+的方式打开,因为那样相当于直接清空文件了,所以truncate要在r+或者a或者a+的模式下测试效果

    seek实现

    f = open('fly away1','rb')   #使用seek(0,2)倒着读文件最后一行
    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
    f.close()
  • 相关阅读:
    键盘弹出与隐藏对TextView的影响
    iOS9 警告框
    计时器的写法
    iOS提交被拒
    新生活
    批量删除wps文档里的回车符的方法!WPS使用技巧分享!
    学习笔记计划
    监控服务器的注册及登陆并邮件通知的代码(go / python)
    Python调用C代码
    导入用户到Discuz论坛
  • 原文地址:https://www.cnblogs.com/winsdom/p/9112283.html
Copyright © 2020-2023  润新知