按日期排序TXT文件中TODO任务行并写入新文件的技术需求
嘿,这个TODO列表排序的需求我帮你搞定啦!用Python就能轻松实现,两种排序场景都覆盖到了,一起来看看:
解决方案:用Python处理TODO列表排序
实现思路
- 读取原始txt文件,过滤掉空行避免无效处理;
- 从每行中提取创建日期或完成日期作为排序依据(YYYY-MM-DD格式的字符串可以直接按字典序排序,和日期顺序完全一致);
- 按指定字段排序后,将结果写入新的txt文件。
完整代码
def sort_todo_file(input_path, output_path, sort_by='creation'): # 读取原始文件,过滤空行 with open(input_path, 'r', encoding='utf-8') as f: lines = [line.strip() for line in f if line.strip()] # 定义排序键:提取对应日期字段 def get_sort_key(line): # 拆分每行,前3个部分是优先级、创建日期、完成日期,剩下的是任务内容 parts = line.split(maxsplit=3) if len(parts) >= 3: creation_date = parts[1] completion_date = parts[2] return creation_date if sort_by == 'creation' else completion_date # 格式异常的行默认排到最后 return '9999-99-99' # 执行排序 sorted_lines = sorted(lines, key=get_sort_key) # 写入新文件 with open(output_path, 'w', encoding='utf-8') as f: f.write('\n'.join(sorted_lines)) f.write('\n') # 末尾添加换行符 # ------------------- 使用示例 ------------------- # 按创建日期排序,生成新文件 sort_todo_file('你的输入文件名.txt', '按创建日期排序结果.txt', sort_by='creation') # 按完成日期排序,生成新文件 sort_todo_file('你的输入文件名.txt', '按完成日期排序结果.txt', sort_by='completion')
使用说明
- 把代码里的
你的输入文件名.txt替换成你实际的TODO文件路径(如果和脚本同目录直接写文件名,否则写完整路径比如C:/docs/todo.txt); - 运行脚本后,会生成两个新文件,分别对应两种排序结果;
- 如果只需要其中一种排序,删掉另一条调用语句即可。
注意事项
- 代码会自动跳过空行,不用担心文件里的空白内容影响结果;
- 如果有格式异常的行(比如缺少日期字段),会被默认排到排序结果的最后,你可以修改
return '9999-99-99'的值来调整它们的位置(比如改成'0000-00-00'就能放到最前面); - 使用
utf-8编码读写,避免中文或特殊字符出现乱码问题。
内容的提问来源于stack exchange,提问作者defsoul




