Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从一个文件中选择一系列行并将其复制到另一个文件中_Python_Python 2.7_File - Fatal编程技术网

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

Python:从一个文件中选择一系列行并将其复制到另一个文件中,python,python-2.7,file,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

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

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

一旦找到匹配项,您可以在文件对象上使用
itertools.islice

from itertools import islice

# some code before matching line is found
chunk = line + ''.join(islice(f1, 200))
这将在接下来的200行中使用迭代器
f1
,因此如果将其放置在循环中,循环中的
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)

像这样的怎么样

>>> 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))
>>将open(“口袋妖怪”、“r”)作为f:
...   行=[]
...   numlines=5
...   计数=-1
...   对于f中的行:
...     如果“口袋妖怪”在队伍里,我要抓住他们所有人!!!
...       计数=0
...     如果-1

还是我误解了你的问题?

(显然,如果你希望有多个匹配项,请每次更改输出文件名,或附加到同一个文件中,等等)感谢塔索斯的快速响应……实际上我想打开一个文件并在文件中搜索一个单词。一旦我找到匹配项,我需要复制接下来的200行,并放入一个新的文件进行进一步的分析。下次我会尝试让我的问题更加清晰……是的,这就是它的作用。(如果你的单词是“口袋妖怪”,你需要5行:p)好的,塔索斯..我也会尝试一下这个逻辑..再次感谢汉克斯·摩西的快速反应。这正好解决了我的问题。