You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中提取文件指定行区间内容并复制到新文件?

提取文本文件中指定区间的内容

没问题,这个需求很常见,我给你两种实用的解决方案,你可以根据文件大小来选择:

方法一:一次性读取所有行(适合小文件)

这种方法先把所有行读到内存里,再筛选出需要的部分,代码直观易懂:

# 读取原文件的所有行
with open(r'filepath\myfile.txt', 'r') as f:
    lines = f.readlines()

copy_mode = False
selected_content = []

for line in lines:
    # 检测到EXAMPLE行时,开启复制模式并保留该行
    if line.strip() == 'EXAMPLE':
        copy_mode = True
        selected_content.append(line)
    # 检测到END行时,保留该行并关闭复制模式
    elif line.strip() == 'END':
        selected_content.append(line)
        copy_mode = False
    # 处于复制模式时,收集当前行
    elif copy_mode:
        selected_content.append(line)

# 将筛选后的内容写入新文件
with open(r'filepath\newfile.txt', 'w') as f:
    f.writelines(selected_content)

如果不需要包含EXAMPLE和END这两行,只需要把对应的selected_content.append(line)注释掉就行。

方法二:逐行处理(适合大文件)

如果你的文件很大,一次性读取所有行会占用过多内存,这种逐行读取、逐行写入的方式更高效:

# 同时打开原文件和新文件,逐行处理
with open(r'filepath\myfile.txt', 'r') as infile, open(r'filepath\newfile.txt', 'w') as outfile:
    copy_mode = False
    for line in infile:
        if line.strip() == 'EXAMPLE':
            copy_mode = True
            # 不需要保留EXAMPLE行的话,删除下面这行
            outfile.write(line)
        elif line.strip() == 'END':
            # 不需要保留END行的话,删除下面这行
            outfile.write(line)
            copy_mode = False
        elif copy_mode:
            outfile.write(line)

小提示

  • 用line.strip()是为了兼容行尾可能存在的空格、换行符,确保准确匹配目标行;如果你确定原文件的行是严格的EXAMPLE\n和END\n,也可以直接用line == 'EXAMPLE\n'来判断。
  • 记得把代码里的filepath替换成你实际的文件路径哦。

内容的提问来源于stack exchange,提问作者LWZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:53:09