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

标签 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 语句,但我无法完全构建逻辑。请帮助

最佳答案

一旦找到匹配项,您就可以在文件对象上使用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)

关于Python:从一个文件中选择一系列行并将其复制到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38656396/

相关文章:

python - 确定文档与 Python 的不同之处

python - 尝试除了奇怪的行为 python 2.7

python - 比较两个大的 csv 文件并用 python 编写另一个

python - 在 Python 中的 msysgit 上询问用户名时获取输出(在 Windows 上)

python - kivy xcode 7 问题 - 构建和存档有效,但验证失败

python - 在 python 中读取 csv 文件时语法无效

python - Python (2.7) 可用的数据结构是否比标准库中的标准列表、集合、元组字典更多?

linux - 如何删除 root 拥有的名称中包含空格的文件?

java - 文件 deleteOnExit() 函数即使在文件被删除后仍保持引用指针打开

python - 类型错误 : bad argument type for built-in operation