如何在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
相关产品推荐
相关产品推荐

