TODO列表管理器:
- 创建一个简单的命令行TODO列表管理器,允许用户添加、删除和查看待办事项。
- 使用Python的文件操作来保存和加载数据
"""
下面是一个简单的命令行TODO列表管理器的Python脚本示例。这个脚本使用了文件操作来保存和加载数据。
首先,创建一个名为todo.txt的文件来存储待办事项。每个待办事项占据一行。
然后,你可以使用以下Python脚本来管理这个TODO列表
"""
import os
import string
#展示菜单
def display_menu():
print("""
TODO List Manager
1.Add a todo
2.Delete a todo
3.View todos
4.Exit
""")
"""
这个脚本定义了几个函数来分别实现添加、删除、查看待办事项以及保存和加载待办事项列表的功能。
主函数main使用一个无限循环来显示菜单并根据用户的输入调用相应的函数。当用户选择退出时,循环结束。
"""
#添加代办事项函数,传入
def add_todo(todos):
todo = input("Enter a new todo: ")
todos.append(todo)
# 保存代办事项函数,未定义,后面定义
save_todos(todos)
print("Todo added successfully!")
# 删除代办事项
def delete_todo(todos):
if not todos:
print("No todos to delete!")
return
# 索引
todo_index = int(input("Enter the index of the todo to delete: ")) - 1
if todo_index < 0 or todo_index >=len(todos):
print("Invalid index!")
return
del todos[todo_index]
# 保存代办事项函数,未定义,后面定义
save_todos(todos)
print("Todo deleted successfully!")
#查看待办事项
def view_todos(todos):
if not todos:
print("No todos to view!")
return
"""
enumerate 是 Python 的内置函数,用于将一个可遍历的数据对象(如列表、元组或字符串)
组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
"""
for index, todo in enumerate(todos, 1):
print(f"{index}. {todo}")
#保存待办事项列表
def save_todos(todos):
"""路径字符串中的 \ 是一个转义字符的开始
1.需要使用原始字符串 (r"tasks\todo.txt")来避免转义字符
2.你可以使用正斜杠(/),它在Python中也被视为有效的路径分隔符,并且不会引发转义字符的问题("tasks/todo.txt")。"""
with open(r"tasks\todo.txt", 'a') as file:
for todo in todos:
file.write(f"{todo}\n")
#加载待办事项列表
def load_todos():
if not os.path.exists(r"tasks\todo.txt"):
return []
with open(r"tasks\todo.txt", "r") as file:
todos = file.readlines()
return [todo.strip() for todo in todos]
def main():
todos = load_todos()
print(todos)
while True:
display_menu()
choice = input("Enter your choice (1-4): ")
if choice == "1":
add_todo(todos)
elif choice == "2":
delete_todo(todos)
elif choice == "3":
view_todos(todos)
elif choice == "4":
print("Exiting...")
break
else:
print("Invalid choice! Please try again.")
#使用 if __name__ == "__main__": 语句的目的是让代码块仅在模块作为主程序运行时执行,而不是在模块被导入时执行。
if __name__ == "__main__":
main()