码迷,mamicode.com
首页 > 其他好文 > 详细

文件的修改

时间:2019-02-07 09:13:28      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:nbsp   remove   行修改   rename   写入   交换   read   for   write   

"""

    文件的修改
"""

# 1.读取文件数据到内存
# 2.进行修改
# 3.将修改后的数据写回文件中
new_data = ""
with open("userdb.txt",encoding="utf-8") as f:
    data = f.read()          #读出来的是一堆字符串,因为encoding="utf-8会将二进制解码
    datas = data.split("\n")
    for line in datas:
        print(line.split("|")[0])
        name = line.split("|")[0]
        if name == "admin": # 取出名字判断是否等于admin
            name = name+"[is good man]" # 如果是则添加 is good man
            # 取出密码 和手机号 再次拼接为原来的样式
            pwd = line.split("|")[1]
            phone = line.split("|")[2]
            new_line = "|".join([name,pwd,phone])
            new_line += "\n"
            # 拼接修改过的数据
            new_data += new_line
        else:
            # 拼接未被修改的数据
            line += "\n"
            new_data += line

print(new_data)
with open("userdb.txt",mode="wt",encoding="utf-8") as f:
    f.write(new_data)

# 以上代码存在什么问题相当于把整个文件数据都存到内存中 会造成内存溢出
#

 

"""
文件修改的另一宗方式*******************
读取一行 修改一行 修改完立马写入硬盘,避免了内存溢出的问题 具体使用哪种方式 的看文件大小 较小的文件 推荐一次性读到内存进行修改 减少io操作 较大的文件 则必须采用第二种方式 """ with open("userdb.txt",mode="rt",encoding="utf-8") as source_f,open("temp.swap",mode="wt",encoding="utf-8") as dst_f: for line in source_f: new_line = line.replace("admin","ADMIN") dst_f.write(new_line) import os os.remove("userdb.txt") # 删除源文件 os.rename("temp.swap","userdb.txt") # 将交换文件重命名为源文件名

 

文件的修改

标签:nbsp   remove   行修改   rename   写入   交换   read   for   write   

原文地址:https://www.cnblogs.com/Hale-wang/p/10354314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!