2010-10-21 50 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

相關問題