详解Python文件修改的两种方式
作者:我爱学python 发布时间:2023-03-14 13:44:13
标签:Python,文件修改
文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式。
一、方式一
将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)。
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...
总而言之,修改文件内容的思路为:以读的方式打开原文件,以写的方式打开一个新的文件,把原文件的内容进行修改,然后写入新文件,之后利用os模块的方法,把原文件删除,重命名新文件为原文件名,达到以假乱真的目的。
来源:https://www.jianshu.com/p/b542d163cd48


猜你喜欢
- SQL Server数据库如何获取TEXT字段的内容长度的方法,是通过DATALENGTH函数来实现的,接下来我们就通过DATALENGTH
- Tensorflow内置了许多数据集,但是实际自己应用的时候还是需要使用自己的数据集,这里TensorFlow 官网也给介绍文档,官方文档。
- 随着同时开发的项目越来越多,需要不停的在各个不同版本的 python 环境之间切换,所以想到了pyenv。以前一直使用的 vir
- 导入注意点:使用phpmyadmin或navicat之类的工具的导入功能还是会相当慢,可以直接使用mysql进行导入导入命令如下:mysql
- 本文实例讲述了Python实现FTP上传文件或文件夹实例。分享给大家供大家参考。具体如下:import sys import os impo
- 本文跟大家谈谈为什么要学python以及如何学好python。一、作为初学者,应该如何学python?很多人对python缩进试的简洁表达不
- 1、停止所有Oracle服务进入计算机管理,在服务中,找到oracle开头的所有服务,右击选择停止。快捷键:ctrl+shift+esc打开
- 引言现在本地创建一个excel表,以及两个sheet,具体数据如下:sheet1: sheet2:读取excel文件pandas.
- 交换变量 x = 6y = 5x, y = y, xprint x>>> 5print y>>>
- 我们用session来实现这一设想。由于session是用户级的全局变量,将登录的信息记录到session中后,用户就可直接浏览这些特定的页
- 前言favicon.ico是网站的图标也是网站的头像,简单来说,就是让我们的网站更加好看。本文主要给大家介绍了关于优雅处理Django中fa
- 很多时候基于php+MySQL建立的网站所出现的系统性能瓶颈往往是出在MySQL上,而MySQL中用的最多的语句就是查询语句,因此,针对My
- 项目总体情况软件:Pycharm环境: Python 3.7.9(考虑到客户可能会有不同操作系统,为了兼容性考虑)技术库: requests
- javascript中ele.getBoundingClientRect():获取一个元素相对于浏览器视口的的坐标(无论父元素定位与否),返
- 本文实例为大家分享了vue+moment实现倒计时的具体代码,供大家参考,具体内容如下示例代码<!-- 使用计算属性,传入截止日期 -
- 发现问题写python的时候出现了这个错,然后网上的教程的解决方案几乎都是——“重新定义下这个变量”,看的我一脸懵逼后来发现原来是我把ret
- argparse模块用法一、 概念argsparse是python的命令行解析的标准模块,内置于python,不需要安装。这个库可以让我们直
- 今天要查询所有realname的username,psw,gname,tel 表结构: 表t1 字段名:t1_id,username,psw
- 今天要做一个量子隧穿的的演示动画,在CSDN上看了很多大佬的文章,然而忙了接近半天才做好这件事。把踩过的坑记一下,同时这段代码也是值得记录的
- 本文实例为大家分享了利用opencv实现SIFT特征提取与匹配的具体代码,供大家参考,具体内容如下1、SIFT1.1、sift的定义SIFT