基础方法:读取-修改-写入
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 os
import tempfile
import shutil
def 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)
选择适合你需求的方法,并确保在操作大型文件时使用临时文件来避免内存不足的问题。