zoukankan      html  css  js  c++  java
  • 文件的相关操作

    r+

    即可读又可写,r+是在后面追加

    with open('text','r',encoding='utf8') as fr:
        data=fr.read()
        print(fr.writable)
        fr.write('x=10')
        print(data)
    

    w+

    清空文件的功能是w提供的

    with open('text','w+',encoding='utf8')as fr:
        print(fr.readable())
        data=fr.read()
        print(data)
    

    a+

    a+有追加的功能,a的指针在末尾,a+功能也没用

    with open('text','a',encoding='utf8')as fr:
        data=fr.read()
        print(data)
        fr.write('x=10')
        fr.flush()
    

    指针的应用:移动指针

    文件的内置方法

    seek(按字节位移动)

    with open('text','rb')as fr:
        fr.seek(1) #1表示位移1位,默认从文件头开始
        fr.seek(1,0)#1表示偏移1位,0表示从头开始
        fr.seek(2,1)#1表示偏移1位,1表示从当前位置开始
        fr.seek(0,2)#0表示偏移0位,2表示文件末开始,把指针移动到文件末
    

    文件修改的两种方式

    方式一:

    import os
    with open('text') as fr,
         open('text1','w')as fw:
            data=fr.read()  #全部读入内存
            data=data.replace('lzs','lll')
            fw.write(data)  ##新文件一次性写入原文件
    #删除原文件
    os.remove('text')
    #重命名新文件名为原文件名
    os.rename('text1','text')
    

    方式二:

    将硬盘存放的该文件的内容一行一行的读入内存,修改完毕后读入新程序

    import os
    with open('text','r',encodinf='utf8')as fr,
         open('text1','w',encoding='utf8')as fw:
            for line in fr:
                line=line.replace('lzs','lll')
                fw.write(line)
    os.remove('text')
    os.rename('text1','text')
    

    总而言之,修改文件内容的思路为:以读的方式打开原文件,以写的方式打开一个新的文件,把原文件的内容进行修改,然后写入新文件,之后利用os模块的方法,把原文件删除,重命名新文件为原文件名,达到以假乱真的目的。

    既然选择了远方,只能风雨兼程
  • 相关阅读:
    Centos 卸载 MySQL
    Kafka体系架构、命令、Go案例
    Go 平滑重启(优雅重启)
    etcd集群数据迁移至新集群
    ubuntu 20.04使用TLSv1
    mybatis拦截器对SQL处理,数据权限逻辑控制
    java敏感字查找和替换
    SpringBoot自定义validation验证
    java使用druid解析器解析SQL语句
    国产数据库人大金仓 KingbaseES V8 R2 在 x86_64 Linux 安装过程
  • 原文地址:https://www.cnblogs.com/lzss/p/11340983.html
Copyright © 2011-2022 走看看