python中如何修改文件?

举报
python教程 发表于 2023/04/21 16:47:28 2023/04/21
【摘要】 修改的概念:对于硬盘上数据的修改, 根本没有改的操作, 只有覆盖操作修改的流程:文件的修改都是数据加载到内存中, 在内存中修改完再覆盖入硬盘 一.修改方式一1.修改过程先以 r 模式打开源文件,将源文件内容全部读入内存然后在内存中完成修改再以 w 模式打开源文件,将修改后的内容覆盖入源文件2.优缺点优点 : 不须要硬盘预留足够的空间缺点 : 会在文件内容过大的情况下,占用过多的内存3.使用场...

修改的概念:对于硬盘上数据的修改, 根本没有改的操作, 只有覆盖操作

修改的流程:文件的修改都是数据加载到内存中, 在内存中修改完再覆盖入硬盘

一.修改方式一

1.修改过程

  • 先以 r 模式打开源文件,将源文件内容全部读入内存
  • 然后在内存中完成修改
  • 再以 w 模式打开源文件,将修改后的内容覆盖入源文件

2.优缺点

  • 优点 : 不须要硬盘预留足够的空间
  • 缺点 : 会在文件内容过大的情况下,占用过多的内存

3.使用场景

看情况而定, 一般用于文本编辑器, 让用户能看到全部的内容

with open('user.txt',mode='r',encoding='utf-8') as f:
    data=f.read()
    data=data.replace('python','人生苦短,我用python')

with open('user.txt',mode='w',encoding='utf-8') as f:
    f.write(data)

二.修改方式二

1.修改过程

  • 以 r 模式打开源文件,然后以 w 模式打开一个临时文件
  • 从源文件中读一行到内存中,修改完毕后直接写入临时文件,循环往复,直到操作完毕所有行
  • 删除源文件,将临时文件名改名为源文件名

2.使用到 OS 模块

  • import os : 导入模块
  • os.remove( ) : 删除
  • os.rename( ) : 改名

3.优缺点

  • 优点 :没有对内存造成过度的占用
  • 缺点:需要硬盘预留出足够的空间来存放临时文件

4.适用场景

看具体而定, 一般用于程序员开发式

import os

with open('user.txt',mode='rt',encoding='utf-8') as read_f,\
        open('user.txt.swap',mode='wt',encoding='utf-8') as write_f:

    for line in read_f:
        if 'python' in line:
            line=line.replace('python','人生苦短,我用python')

        write_f.write(line)
#Python小白学习交流群:725638078
os.remove('user.txt')                  #删除源文件 
os.rename('user.txt.swap','user.txt')  #把临时文件名改成源文件名

三.文件拷贝示例

可以拷贝任意类型的文件
os.path.isfile()先判断文件是否存在

import os
while 1:
    user_file = input("请输入文件路径>>").strip()
    if not os.path.isfile(user_file):
        print("文件不存在,请重新输入")
        continue
    else:
        copy_path = input("请输入目标路径>>").strip()
        with open(r"%s"%(user_file),"rb")as read_file,\
            open(r"%s"%(copy_path),"ab")as w_f:
            for line in read_file:
                w_f.write(line)
            if len(user_file) == len(copy_path):
                print("copy成功")
                break
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。