2010-10-21 24 views
-1

我试图编写一些代码,它将打开List1.txt并复制内容,直到看到字符串'John smith'List2.txt从文件中复制,直到找到某个标记字符串

这是我到目前为止有:

F=open('C:\T\list.txt','r').readlines() 
B=open('C:\T\list2.txt','w') 
BB=open('C:\T\list2.txt','r').readlines() 
while BB.readlines() == 'John smith': 
    B.writelines(F) 

这里是什么List1.txt可以包含一个例子:

Natly molar 
Jone rock 
marin seena 
shan lra 
John smith 
Barry Bloe 
Sara bloe` 

但是,它似乎并不奏效。我究竟做错了什么?

+2

对于初学者你的路是错误的。更改\ \ \或/ – bernie 2010-10-21 15:49:27

+0

您正在打开list2.txt进行写入并立即打开它以供读取?然后你正在阅读它?这应该如何工作?我期望写调用截断文件,以便读取循环没有任何内容。 – hughdbrown 2010-10-21 15:53:24

回答

1
F=open('C:\T\list1.txt','r') 
B=open('C:\T\list2.txt','w') 
for l in F: #for each line in list1.txt 
    if l.strip() == 'John Smith': #l includes newline, so strip it 
     break 
    B.write(l) 

F.close() 
B.close() 
3
from itertools import takewhile 

with open('List1.txt') as fin, open('List2.txt', 'w') as fout: 
    lines = takewhile(lambda x : x != 'John smith\n', fin) 
    fout.writelines(lines) 
+0

仅供参考,你有一个错字:takewile – 2010-10-21 16:08:26

+0

很好的答案,但我会说使用lambda加2的itertools.takewhile()在with语句中打开几乎超出了OP作为他的功课援助。 – hughdbrown 2010-10-21 16:25:11

+2

@hughdbrown:这可能是为什么OP接受jdizzle的回答 – SilentGhost 2010-10-21 16:27:21

相关问题