zoukankan      html  css  js  c++  java
  • 7. 修改文件的两种方式

    一、修改小文件
    1、打开一个文件,获取到文件所有内容
    2、对内容进行修改:替换、写SQL、列表分割等
    3、清空原来文件的内容
    4、把新内容写入
    f = open('username.txt','a+')
    f.seek(0)
    all_str = f.read() #读取所有内容,占内存较大
    print(all_str)
    new_str = all_str.replace('4567889','123456')
    f.seek(0) #此时上方read已读到文件最后,清空操作要重新seek到文件开头
    f.truncate() #清空文件
    f.write(new_str)
    f.close()
     
    #在每个用户名前面加上syz_
    f = open('username.txt','a+')
    f.seek(0)
    all_str = ''
    for line in f:
    lines = 'syz_' + line
    all_str += lines
    f.seek(0)
    f.truncate()
    f.write(all_str)
    f.close()
     
    for line in f.readlines():把文件中的所有内容转换成列表放到列表中,占用内存较大
    for line in f: 是一行一行的读取内容,占用内存较小
     
    二、修改大文件时
    这种方法不用开辟一块内存来存文件中的所有数据,直接每一行写入另外一个文件,写完之后删除重命名。
    import os
    with open('words',encoding='utf-8') as fr,open('.words.bak','w',encoding='utf-8') as fw:
    for line in fr:
    new_line = line.replace('花','flower')
    fw.write(new_line)
    os.remove('words') #删除文件
    os.rename('.words.bak','words') #改名
     
     
    补充:
    f.write() #只能写字符串,对与列表中的元素,只能循环写入
    f.writelines() #自动循环写入列表、字符串
     
     
  • 相关阅读:
    2019 SDN阅读作业
    2019 SDN上机第3次作业
    SDN实验2
    SDN
    说好不肝---第五次作业
    [2020BUAA软工助教]助教每周小结(week 8)
    [2020BUAA软工助教]助教每周小结(week 7)
    [2020BUAA软工助教]助教每周小结(week 6)
    [2020BUAA软工助教]助教每周小结(week 5)
    [2020BUAA软工助教]助教每周小结(week 4)
  • 原文地址:https://www.cnblogs.com/pengzhuopeng/p/8893908.html
Copyright © 2011-2022 走看看