2013-12-17 17 views
0

我有一個包含以下lines.In這一點,如果我給輸入的字符串爲「LOG_MOD_L0_RECEIVE_TXBRP_CONTROL」,那麼它應該從如何具體線路從文件複製在python

6.959999999: LOG_MOD_L0_RECEIVE_TXBRP_CONTROL(0, 
0x0059005f, 
0x0049006d, 
0x00b9008b, 
0x001300b9) 

這是複製的訂單文件我的文件:

6.959999999: LOG_MOD_L0_RECEIVE_TXBRP_CONTROL(0, 
0x0059005f, 
0x0049006d, 
0x00b9008b, 
0x001300b9) 
7.959999999: LOG_MOD_L0_RECEIVE_TXBRP_Measure(1, 
0x0059005m, 
0x0049006d, 
0x04b9008b, 
0x001300b9) 

我的代碼:

fo=open("file1.txt","r") 
fin=open("file2.txt","r") 
string=raw_input("Enter the String:") 
lines=fo.readlines() 
    for line in lines: 
     if string in line: 
     fin.write(line) 
fin.close() 

它僅複製這麼多。

6.959999999: LOG_MOD_L0_RECEIVE_TXBRP_CONTROL(0, 

它不會複製直到括號結束。

回答

2

您必須以文件塊形式讀取文件;您匹配的內容只出現在同一行,但要獲得行的其餘部分,你必須繼續閱讀:

with open("file1.txt","r") as fin, open("file2.txt","w") as fout: 
    string = raw_input("Enter the String:") 
    for line in fin: 
     if string in line: 
      fout.write(line) 
      try: 
       while ')' not in line: 
        line = next(fin) 
        fout.write(line) 
      except StopIteration: 
       pass # ran out of file to read 

這將使用輸入文件對象作爲一個迭代,比直接用打開的文件對象循環for line in fin。找到匹配行後,嵌套的while循環將從同一個文件對象中讀取更多行,直到找到包含)的行。

for循環然後在while循環完成後恢復時,循環會在文件對象現在進入的位置處啓動。

+0

它的工作100%絕對..非常感謝你 – user3082400

+0

@ user3082400:然後,你找到一行''''之前用完了文件。 –

+0

@ user3082400:我爲此添加了處理,但這確實意味着您可能正在處理截斷的輸入文件。 –