如何通过program.py在运行两次时精准删除text文件中的指定文本行
解决方案
我来帮你搞定这个需求!核心要解决两个关键点:一是判断脚本是否是第二次运行,二是精准筛选要保留的行(只删掉纯text2的行,留下包含text2但还有其他内容的行)。
步骤1:追踪脚本运行次数
我们可以用一个轻量的计数文件(比如run_count.txt)来记录运行次数,每次启动脚本先读取这个文件的数值,再决定执行的操作:
- 第一次运行:执行你原本的文本插入逻辑,然后把计数更新为2
- 第二次运行:执行删除指定行的逻辑,之后可根据需求选择重置计数(方便重复测试)或保持当前计数
步骤2:实现精准行筛选
删除逻辑的核心是逐行读取文本文件,只保留不等于text2的行(注意要去掉每行末尾的换行符再判断,避免因换行符导致匹配失败)。
完整代码示例
def get_run_count(): # 读取运行次数,文件不存在则默认是第一次运行 try: with open('run_count.txt', 'r') as f: return int(f.read().strip()) except FileNotFoundError: return 1 def update_run_count(count): # 更新运行次数到计数文件 with open('run_count.txt', 'w') as f: f.write(str(count)) def insert_text(): # 这里替换成你原本的插入文本逻辑,以下是示例代码 with open('text.txt', 'a') as f: f.write('text1\n') f.write('text2\n') f.write('text1 text2\n') print("已完成文本插入") def delete_target_lines(): # 临时存储需要保留的行 lines_to_keep = [] with open('text.txt', 'r') as f: for line in f: # 去除换行符后判断是否为纯text2 stripped_line = line.strip() if stripped_line != 'text2': lines_to_keep.append(line) # 将保留的行覆盖写回原文件 with open('text.txt', 'w') as f: f.writelines(lines_to_keep) print("已删除纯text2的行,text1 text2的行已保留") if __name__ == '__main__': run_count = get_run_count() if run_count == 1: insert_text() update_run_count(2) elif run_count == 2: delete_target_lines() # 可选:如果需要下次运行重新执行插入,解开下面的注释重置计数 # update_run_count(1)
代码说明
get_run_count():负责读取运行计数,第一次运行时因run_count.txt不存在,会默认返回1update_run_count():更新计数文件,标记下一次运行的状态insert_text():这里是示例插入逻辑,你可以直接替换成你自己已实现的插入代码delete_target_lines():逐行扫描文件,仅保留非纯text2的行,再覆盖写回原文件,完美匹配你的需求
测试时,第一次运行脚本会执行插入操作,第二次运行就会自动删除纯text2的行,而text1 text2的行会被完整保留。
内容的提问来源于stack exchange,提问作者Aliaksandr S.
相关产品推荐
相关产品推荐

