zoukankan      html  css  js  c++  java
  • day4_修改文件

    修改文件有两种方式:一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;第二种是把修改后的文件内容写到一个新的文件中

    第一种:一次性把文件全部读到,读到内存这个能,这种文件小没什么问题,大文件不好。

    实例1:

    #1、简单、粗暴直接的,一下这个方式有点儿麻烦,打开文件两次
    f = open('file.txt','r',encoding='utf-8')
    res = f.read().replace('总是','zongshi')  #替换内容,生成新文件
    f.close()
    f = open('file.txt','w',encoding='utf-8')
    f.write(res)
    f.flush()  #立即把缓冲区里面的内容,写到磁盘上,达到立即生效的效果
    f.close()

    实例2:a+模式修改

    f = open('file.txt','a+',encoding='utf-8')
    f.seek(0)     #因为是a+模式,指针在最后,所以移到最前面
    res = f.read().replace('','NI')
    f.seek(0)   #读完后文件指针又到最后面,所以再移到最前面
    f.truncate() #清空文件里面的内容
    f.write(res)  #写入
    f.close()

    实例3:r+模式修改

    f = open('file.txt','r+',encoding='utf-8')
    res = f.read().replace('','WO')
    f.seek(0)
    f.write(res)  #自动清空原内容,写入新内容

    第二种 :循环读取每一行,有需要改的就改内容,再逐行写入新文件,最后删除旧文件,新文件名改成就文件名

    #读每一行后写入新文件,然后删除旧文件,再把新文件改成旧文件名字,需要导入os模块
    import os #导入os模块
    f = open('file','r',encoding='utf-8')
    f2 = open('file_bat.txt','w',encoding='utf-8') #再打开一个文件,一直处于打开状态,所以w模式不会覆盖,会接着往后面写
    for line in f:
        newline = line.replace('一点','两点')  #将文件中的一点改成两点
        f2.write(newline) #写入新文件
    f.close() #关闭文件
    f2.close() #关闭文件
    os.remove('file')  #删除file这个文件
    os.rename('file_bat.txt','file') #将新文件名字改成file

    with写法:

    with open('file.txt',encoding='utf-8') as f, open('file.txt.bak','w',encoding='utf-8') as f2:#打开多个文件
        for line in f:
            new_line = line.replace('二点','一点')
            f2.write(new_line)
    
    os.remove('file.txt')
    os.rename('file.txt.bak','file.txt')
  • 相关阅读:
    ORACLE触发器具体解释
    WebStorm 7.0 注冊码
    ZOJ 3794 Greedy Driver spfa
    Linux下的经常使用性能查询命令top、vmstat、gprof、pidstat之对照
    免费的天气预报API--谷歌,雅虎,中央气象台
    div:给div加滚动栏 div的滚动栏设置
    走进小作坊(十一)----移动web实现指南
    执行游戏时出现0xc000007b错误的解决方法
    中国大推力矢量发动机WS15 跨入 世界先进水平!
    tomcatserver乱码问题,tomcat与数据库之间的编码统一转换
  • 原文地址:https://www.cnblogs.com/once-again/p/9574078.html
Copyright © 2011-2022 走看看