Python怎么修改一个文件?
发布网友
发布时间:2022-04-25 17:01
我来回答
共2个回答
懂视网
时间:2022-05-10 18:40
本篇文章给大家带来的内容是关于Python下如何实现文件的修改操作?(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
今天我们来讨论下python下如何实现:打开文件—修改文件——关闭文件的操作
本文采用逐行解释的方法。
思路:
第一步:把文件读取出来
第二部:再用'w'模式写入到新文件
第三部:把原文件删除,并且把新文件重命名回原文件
这样就实现了文件的修改操作
我们先来看看原文件的内容
with open('xiakexing') as old_file:
print(old_file.read())
赵客缦胡缨,吴钩霜雪明。银鞍照白马,飒沓如流星。
十步杀一人,千里不留行。事了拂衣去,深藏身与名。
闲过信陵饮,脱剑膝前横。将炙啖朱亥,持觞劝侯嬴。
三杯吐然诺,五岳倒为轻。眼花耳热后,意气素霓生。
救赵挥金锤,邯郸先震惊。千秋二壮士,烜赫大梁城。
纵死侠骨香,不惭世上英。谁能书阁下,白首太玄经。
我们想要做的修改是把第二行的千里不留行改成“万里不流行”
补充说明:用with open()格式可以同时打开两个文件,本例中实际上是打开文件xiakexing,并且创建文件xiakexing.bak,分别创建对应的文件对象old_file和new_file
with open('xiakexing') as old_file,open('xiakexing.bak','w') as new_file:
#采用for循环从文件对象old_file里迭代地读取文件,简单来讲就是一行一行地读取文件,这样内存中只存储了一行文件的内容,节省了内存,也防止文件过大时造成的“超载”
for i in old_file:
if '千里不留行' in i: #这里每读取一行我们就对其进行条件判断,判断该行是否是我们要找的那一行
i = i.replace('千','万')#当找到该行时,把该行的内容替换成我们想要的内容
#每读取一行我们就在新文件中写入一行,不管该行有没有变化,总之就是读一行、写一行、读一行、写一行
new_file.write(i)
#当for循环结束后,文件也已经被我们修改完毕了,这时应该删除旧文件,重命名新文件,为了实现这一目的,我们引入了os模块,os模块内主要是一些和操作系统有关的函数
import os
os.remove('xiakexing') #删除原文件
os.rename('xiakexing.bak','xiakexing') #把新文件重命名回原文件名,最终实现了文件的修改
然后我们再来看看文件的内容
with open('xiakexing') as old_file:
print(old_file.read())
赵客缦胡缨,吴钩霜雪明。银鞍照白马,飒沓如流星。
十步杀一人,万里不留行。事了拂衣去,深藏身与名。
闲过信陵饮,脱剑膝前横。将炙啖朱亥,持觞劝侯嬴。
三杯吐然诺,五岳倒为轻。眼花耳热后,意气素霓生。
救赵挥金锤,邯郸先震惊。千秋二壮士,烜赫大梁城。
纵死侠骨香,不惭世上英。谁能书阁下,白首太玄经。
这样,我们就实现了文件的修改。由于我们使用的是with open() as 的方法,所以不需要文件关闭的步骤,如果是通过file=open()的方式开打的文件,则必须在末尾加上关闭文件的语句。
热心网友
时间:2022-05-10 15:48
通常的做法是先将文件的所有内容读入内存,修改后再全部写回原文件。
如果文件中所有数据的偏移地址都是固定的,那么可以以r+方式打开文件,将文件指针移动到要修改的数据处,写入新数据覆盖即可。追问也就是说r+模式中直接移动指针到开头,写入数据,那么后面的全都会被覆盖。
是吗
python 怎么修改文件中的某个字符,求帮忙改下代码
文件中的内容支持a+追加模式, 不能直接修改。你可以把内容读到内存,修改好内存的数据。将原来文件重命名为res_old.h,然后再新建文件res.h写入你需要的内容
Python中怎么修改文件中的某一行内容。(文件很大,不能读取全部内容...
1. read() 接口的问题 f = open(filename, 'rb') f.read()我们来读取 1 个 nginx 的日至文件,规模为 3Gb 大小。read() 方法执行的操作,是一次性全部读入内存,显然会造成:MemoryError ...也即会发生内存溢出。2. 解决方案:转换接口3. 真正 Pythonic 的方法 真正 Pythonci 的方法,使用 wit...
用python读取文本文件,对读出的每一行进行操作,这个怎么写?
把你的代码改一下 f = open("test.txt", "r") while True: line = f.readline() if line: pass # do something here line=line.strip() p=line.rfind('.') filename=line[0:p] print "create %s"%line else: breakf.close()写得可能罗嗦些,就是...
Python如何实现将一个文件夹里面的文件重命名并放到另外一个文件夹里面...
import reimport osdef get_file_list(folder): file_list = []; for root, dirs, files in os.walk(folder): for f in files: path=root+os.path.sep+f file_list.append(path) return file_listdef get_re_file_list(file_list,re_rule): file_list_re=[] ...
如何用python批量改文件名
引入os模块(python中操作文件的模块)。2 定义修改名称的函数rename。在rename函数中定义一个储存路径的变量path,并将要修改文件名的文件夹的路径赋值给该变量。3 继续向函数中添加功能代码 4 最后调用这个rename函数这个脚本就写完了。执行这个文件,就会将文件夹下所有的文件改成 这里是你要改的文件...
用python怎么修改远程主机上的文件内容
可以考虑用paramiko模块,ssh上去,执行命令操作。也可以用socket,一个做server,一个做client,来操作。
python读取txt文件,查找到指定内容,并做出修改
def modifyip(tfile,sstr,rstr):try:lines=open(tfile,'r').readlines()flen=len(lines)-1 for i in range(flen):if sstr in lines[i]:lines[i]=lines[i].replace(sstr,rstr)open(tfile,'w').writelines(lines)except Exception,e:print e modifyip('a.txt','a','A')...
python怎么读取修改csv文件,并且重新创建在一个文件夹中
参考方法如下:逐行处理:for line in open("samples/sample.csv"):title, year, director = line.split(",") //以“,”号为分割,按逗号将数据分成三部分;print year, title 使用csv模块处理:import csv reader = csv.reader(open("samples\sample.csv"))for title, year, director in ...
python怎么修改某个内存地址的数据
使用ctypes模块调用WriteProcessMemory函数,在创建程序进程后,就可以修改该程序指定内存地址。WriteProcessMemory的函数原型如下所示。BOOL WriteProcessMemory(HANDLE hProcess,LPVOID lpBaseAddress,LPCVOID lpBuffer,SIZE_T nSize,SIZE_T* lpNumberOfBytesWritten );其参数含义如下。· hP...
学生党自学Python的自动化操作
Python办公自动化10个高频操作 遍历文件夹 批量操作的前提就是对文件夹进行遍历,使用S模块可以轻松的遍历文件夹,os.walk 遍历后产生三个参数: 1.当前文件夹路径 2.包含文件夹名称[列表形式] 3.包含文件名称[列表形式 代码如下,大家可以根据自己的路径进行修改 当手上的需求明确有获取给定路径各级文件夹下所有符合条...