2016-07-29 49 views
1

我有一个文件,我想选择文件中的某些行并将其复制到另一个文件。Python:从一个文件中选择一系列行并将其复制到另一个文件

在第一个文件中,我想要复制的行有单词“XYZ”,从这里我想选择接下来的200行(包括匹配行)并将其复制到另一个文件。下面

是我的代码

match_1 = 'This is match word' 
with open('myfile.txt') as f1: 
    for num, line in enumerate(f1, 1): 
     if log_1 in line: 
      print line 

上面的代码使我行的开始,我需要选择200线形成匹配的行,然后复制,将其移动到另一个文本文件。

我试着像while语句对夫妇的选择,但我不能够建立逻辑fully.Please帮助

回答

1

您可以将文件对象使用itertools.islice一旦找到匹配:

from itertools import islice 

# some code before matching line is found 
chunk = line + ''.join(islice(f1, 200)) 

这将消耗迭代器f1到接下来的200行,因此如果循环中放置了循环,则循环中的num计数可能不一致。

如果您不需要在文件中的其他行找到比赛后,你可以使用:

from itertools import islice 

with open('myfile.txt') as f1, open('myotherfile.txt') as f_out: 
    for num, line in enumerate(f1, 1): 
     if log_1 in line: 
      break 
    chunk = line + ''.join(islice(f1, 200)) 
    f_out.write(chunk) 
+0

感谢摩西为您的快速响应。这完全解决了我的问题。 – Davidson

0

如何像

>>> with open("pokemonhunt", "r") as f: 
... Lines = [] 
... numlines = 5 
... count = -1 
... for line in f: 
...  if "pokemon" in line:   % gotta catch 'em all!!! 
...  count = 0 
...  if -1 < count < numlines: 
...  Lines.append(line) 
...  count += count 
...  if count == numlines: 
...  with open("pokebox","w") as tmp: tmp.write("".join(Lines)) 

还是我误解你的问题?

+0

(显然,如果你期望多个匹配,每次改变outfile名称,或追加到相同的文件等) –

+0

感谢Tasos为您的快速反应....实际上我想打开一个文件并搜索一旦我得到了匹配,我需要复制下200行,并在一个新的文件进行进一步分析。我会尝试添加更清晰的下一次我的问题... – Davidson

+0

是的,这是什么这是。 (如果你的话是“口袋妖怪”,你想要5行:p) –

相关问题