在文本文件中删除和插入行
我有一个文本文件,内容如下:
first line second line third line forth line fifth line sixth line
我想把第三和第四行替换成三行新的内容。这样,上面的内容就会变成:
first line second line new line1 new line2 new line3 fifth line sixth line
我该如何用Python来实现这个呢?
6 个回答
3
把整个文件读成一行一行的列表,然后用你想删除的行替换成一个新的行列表:
f = open('file.txt')
data = f.readlines()
f.close()
data[2:4] = [
'new line1\n',
'new line2\n',
'new line3\n']
f = open('processed.txt','w')
f.writelines(data)
f.close()
注意,列表的切片是从零开始的,[2:4]的意思是“从第2个元素开始,到第4个元素之前的所有元素”。
4
import fileinput
myinsert="""new line1\nnew line2\nnew line3"""
for line in fileinput.input("file",inplace=1):
linenum=fileinput.lineno()
if linenum==1 or linenum>4 :
line=line.rstrip()
if linenum==2:
line=line+myinsert
print line
import os
myinsert=["new line3\n","new line2\n","new line1\n"]
data=open("file").readlines()
data[2:4]=""
for i in myinsert:data.insert(2,i)
open("outfile","w").write(''.join(data))
os.rename("outfile","file)
或者如果你的文件不太大,
7
对于python2.6
with open("file1") as infile:
with open("file2","w") as outfile:
for i,line in enumerate(infile):
if i==2:
# 3rd line
outfile.write("new line1\n")
outfile.write("new line2\n")
outfile.write("new line3\n")
elif i==3:
# 4th line
pass
else:
outfile.write(line)
对于python3.1
with open("file1") as infile, open("file2","w") as outfile:
for i,line in enumerate(infile):
if i==2:
# 3rd line
outfile.write("new line1\n")
outfile.write("new line2\n")
outfile.write("new line3\n")
elif i==3:
# 4th line
pass
else:
outfile.write(line)