详解Python文件修改的两种方式

阿橙
阿橙
发布时间:2026-10-13| 6人浏览过
原创

本文详解Python中修改文件的两种核心机制:全量加载内存后覆盖与逐行读取重写。通过对比全量处理与逐行处理的代码示例,解析如何利用临时文件配合os模块实现原文件替换,帮助开发者根据文件大小选择合适的修改策略。

文件修改的本质与模拟机制

存储在硬盘上的文件数据本质上只支持覆盖操作,并不存在真正的“原地修改”概念。用户日常所见的文件修改效果,实际上是系统或应用程序模拟出来的结果,具体实现主要包含以下两种路径。

方式一:全量加载与内存覆盖

第一种实现方式

该方法首先将硬盘中文件的全部内容加载至内存空间,由于内存数据具备可写性,因此可以在内存中对数据进行修改。待修改完成后,再将内存中的数据整体写回硬盘,从而覆盖原有文件。常见的文本编辑器如Word、vim以及Notepad++等均采用此类机制。

全量修改代码示例


import os

with open('37r.txt') as fr, \
    open('37r_swap.txt', 'w') as fw:
  data = fr.read() # 全部读入内存,如果文件很大,会很卡
  data = data.replace('tank', 'tankSB') # 在内存中完成修改

  fw.write(data) # 新文件一次性写入原文件内容

# 删除原文件
os.remove('37r.txt')
# 重命名新文件名为原文件名
os.rename('37r_swap.txt', '37r.txt')
print('done...')
done...

方式二:逐行读取与重写

第二种实现方式

此方法采用流式处理,将硬盘文件的内容逐行读取至内存中,在内存中对每一行进行必要的修改,随后立即写入到一个新的目标文件中。当所有数据处理完毕后,使用这个新生成的文件替换原始的源文件。

逐行修改代码示例


import os

with open('37r.txt') as fr,\
    open('37r_swap.txt', 'w') as fw:
  # 循环读取文件内容,逐行修改
  for line in fr:
    line = line.replace('jason', 'jasonSB')
    # 新文件写入原文件修改后内容
    fw.write(line)

os.remove('37r.txt')
os.rename('37r_swap.txt', '37r.txt')
print('done...')
done...

文件替换的通用实现逻辑

综上所述,修改文件内容的通用逻辑是:以只读模式打开原始文件,同时以写入模式创建一个新文件。在读取原文件内容的过程中进行所需的修改,并将结果写入新文件。最后,借助Python的os模块,先删除原始文件,再将新文件重命名为原始文件的名称,从而在用户感知层面实现文件的无缝更新。

以上即为本文关于Python文件修改机制的完整解析,希望能为读者的学习与实践提供有益参考,同时也欢迎大家继续支持本站获取更多技术内容。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。