文件的修改

Posted hale-wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件的修改相关的知识,希望对你有一定的参考价值。

"""

    文件的修改
"""

# 1.读取文件数据到内存
# 2.进行修改
# 3.将修改后的数据写回文件中
new_data = ""
with open("userdb.txt",encoding="utf-8") as f:
    data = f.read()          #读出来的是一堆字符串,因为encoding="utf-8会将二进制解码
    datas = data.split("
")
    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 += "
"
            # 拼接修改过的数据
            new_data += new_line
        else:
            # 拼接未被修改的数据
            line += "
"
            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") # 将交换文件重命名为源文件名

 



以上是关于文件的修改的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

vscode中设置vue代码片段

sublime的片段功能

vc++2010设置和c#一样的代码段,vs2010 两下tab设置

在使用ViewPager时尝试从其父活动修改片段时出现空指针异常