如何用Python删除文件中指定起始行到结束行的内容
Python实现删除文件指定行范围的内容
需求说明
原文件内容:
a D c a T c a R c
需要删除第3行到第5行(行号从1开始计数),处理后得到:
a D c a R c
方法一:一次性读取处理(适合小文件)
直接读取文件所有行,过滤掉指定范围的行后写回文件,操作简单直观:
file_path = "your_file.txt" # 要删除的行范围(行号从1开始) start_del = 3 end_del = 5 # 读取所有行 with open(file_path, 'r', encoding='utf-8') as f: lines = f.readlines() # 过滤目标行:Python列表是0索引,所以要把行号转成索引范围 filtered_lines = [line for idx, line in enumerate(lines) if not (start_del - 1 <= idx <= end_del - 1)] # 写入处理后的内容 with open(file_path, 'w', encoding='utf-8') as f: f.writelines(filtered_lines)
方法二:逐行读写(适合大文件)
如果文件体积较大,一次性加载所有行会占用过多内存,推荐逐行读取并写入,同时用临时文件过渡避免直接修改原文件出错:
import os file_path = "your_file.txt" start_del = 3 end_del = 5 temp_path = "temp_processed.txt" with open(file_path, 'r', encoding='utf-8') as infile, open(temp_path, 'w', encoding='utf-8') as outfile: # 从1开始计数行号,匹配用户的行号逻辑 for line_num, line in enumerate(infile, start=1): if not (start_del <= line_num <= end_del): outfile.write(line) # 替换原文件(若需要保留原文件,可先复制一份备份) os.replace(temp_path, file_path)
注意事项
- 行号计数:代码中默认匹配用户的从1开始计数逻辑,若你习惯用0索引,直接调整
start_del和end_del的数值即可。 - 编码问题:指定
encoding='utf-8'避免不同系统下的文件乱码问题。 - 数据安全:操作重要文件前建议先备份,方法二中的临时文件方式也能降低出错风险。
内容的提问来源于stack exchange,提问作者mzvic
相关产品推荐
相关产品推荐

