在python中删除特定内容并输出到文件

有一个文件a.txt,内有如下内容:
#test start
abcd
efgh
hijk
lmno
#test end
pqrs
ghij
klmn

这样的话,把
#test start
abcd
efgh
hijk
lmno
#test end
这些行删除,并且将删除后的内容追加到b.txt末尾。

这样的话该怎么写呢?
感激不尽。

f1=open("a.txt","r")
content=f1.readlines()
f1.close()

f1=open("a.txt","w")
f2=open("b.txt","a")

F = ""
for line in content:
if(line.strip() == "#test end"):
F = "a"
f.write(line)
continue
elif(line.strip() == "#test start"):
F = "b"
f = f1 if(F == "a") else f2
f.write(line)
f1.close()
f2.close()

=============================下面是说明=============================
运行一下试一试,和标记数目无关。也就是
pqrs
#test start
abcd
efgh
hijk
lmno
#test end
pqrs
ghij
klmn
#test start
hijk
lmno
#test end
这样的也可以正确操作。

大部分代码都比较简单,需要说明的有两个地方:
1、定义F是为了标记输出内容该往哪个文件输入。
2、f = f1 if(F == "a") else f2这是个技巧,模拟C中的三元操作符?:,也就是用一个f引用区分两个文件引用以简化代码。也就是
f = f1 if(F == "a") else f2
f.write(line)
可以用
if(F == "a")
f1.write(line)
elif(F == "b")
f2.write(line)
来代替。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-03
是这样吗?
>>> fil=open('a.txt','r')
>>> string=''
>>> st=''
>>> for i in range(9):
if i<6:
string+=fil.readline()
else:
st+=fil.readline()

>>> b=open('b.txt','w')
>>> b.write(string)
>>> b.close()
>>> a=open('a.txt','w')
>>> a.write(st)
>>> a.close()

这是pythonshell中运行结果,我试了,应该是对的
第2个回答  2012-01-02
fa=open("a.txt","w")
fb=open("b.txt","w")
f1=fa.read()
fa.write(fi[fi.find("#test end")+len("#test end"),-1])
fa.close()
fb.write(f1[fi.find("#test start"),fi.find("#test end")+len("fi.find("")])
fb.close
#就是这些了..呵呵...没运行,给你提供一个思路,很累啊.....有问题就说我邮箱[email protected]
第3个回答  2012-01-17
模拟C中的三元操作符?:,也就是用一个f引用区分两个文件引用以简化代码。也就是
相似回答