基础方法:读取-修改-写入
def remove_line_basic(filename, target_line):with open(filename, 'r', encoding='utf-8') as file:lines = file.readlines()new_lines = [line for line in lines if target_line not in line]with open(filename, 'w', encoding='utf-8') as file:file.writelines(new_lines)
使用临时文件
import osimport tempfileimport shutildef remove_line_safe(filename, target_line):temp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)with open(filename, 'r', encoding='utf-8') as file:for line in file:if target_line not in line:temp_file.write(line)shutil.move(temp_file.name, filename)
使用列表推导式
def remove_line_list_comprehension(filename, target_line):with open(filename, 'r', encoding='utf-8') as file:lines = file.readlines()new_lines = [line for line in lines if target_line not in line]with open(filename, 'w', encoding='utf-8') as file:file.writelines(new_lines)
使用切片操作
def remove_line_slice(filename, target_line):with open(filename, 'r', encoding='utf-8') as file:lines = file.readlines()del lines[lines.index(target_line)]with open(filename, 'w', encoding='utf-8') as file:file.writelines(lines)

使用`pop()`方法
def remove_line_pop(filename, target_line):with open(filename, 'r', encoding='utf-8') as file:lines = file.readlines()lines.pop(lines.index(target_line))with open(filename, 'w', encoding='utf-8') as file:file.writelines(lines)
使用`remove()`方法
def remove_line_remove(filename, target_line):with open(filename, 'r', encoding='utf-8') as file:lines = file.readlines()lines.remove(target_line)with open(filename, 'w', encoding='utf-8') as file:file.writelines(lines)
逐行读取并写入新文件
def remove_line_by_reading(filename, target_line):with open(filename, 'r', encoding='utf-8') as file:lines = file.readlines()with open(filename, 'w', encoding='utf-8') as file:for i, line in enumerate(lines):if i != lines.index(target_line):file.write(line)
使用`filter()`函数和`lambda`表达式
def remove_line_filter(filename, target_line):with open(filename, 'r', encoding='utf-8') as file:lines = file.readlines()filtered_lines = list(filter(lambda line: target_line not in line, lines))with open(filename, 'w', encoding='utf-8') as file:file.writelines(filtered_lines)
选择适合你需求的方法,并确保在操作大型文件时使用临时文件来避免内存不足的问题。
