Python:从一个文件中选择一系列行并将其复制到另一个文件

时间:2016-07-29 10:21:07

标签: python python-2.7 file

我有一个文件,我想在文件中选择某些行并将其复制到另一个文件。

在第一个文件中,我要复制的行包含" 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语句,但我无法完全构建逻辑。请帮助

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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))

或者我误解了你的问题?