class Tasks(object):
def __init__(self, container=None):
if container is None:
container = []
self.container = container
def add(self,name,date,priority):
self.container.append([name,date,priority])
def __str__(self):
return str(self.container)
def __repr__(self):
return str(self.container)
def __getitem__(self, key):
return Tasks(self.container[key])
def __len__(self):
return len(self.container)
class management(Tasks):
def save(self):
outfile = open ("tasks.txt","w")
outfile.write(("\n".join(map(lambda x: str(x), task))))
print task
outfile.close ()
def load(self):
load_file = open("tasks.txt","r")
task = load_file.readlines()
print task
#this line is the attempt to convert back into the original format
Tasks(add(task))
task = Tasks()
if __name__== "__main__":
p = management(Tasks)
#task.add("birthday","27092012","high")
#task.add("christmas","20062000","medium")
#task.add("easter","26011992","low")
print task
#print len(task)
#p.save()
p.load()
print "test",task
print len(task)
我的代码的最终目的是生成一个任务管理器(待办事项列表)
上面的代码生成一个 [name,date,priority] 列表,然后将其保存在一个名为 tasks.txt 的文本文件中 - 据我所知,这可以完美运行(只要我注释掉 p.load)。
然而......加载函数加载文件,但我需要能够打印它作为打印任务加载的列表,就像我在注释掉 p.load() 时所做的那样。
这将使我能够最终,删除,排序等任务
提前致谢
我为我不知道如何在第一行表达的糟糕问题道歉
编辑: 我考虑过酸洗可以保留列表格式,但我认为它不能解决我能够将参数传递回 Tasks() 类以便能够将它们打印为打印任务的问题
编辑 2 加载函数现在读取
def load(self):
with open("tasks.txt", "r") as load_file:
tasks = [ast.literal_eval(ln) for ln in load_file]
print tasks
for t in tasks:
todo.add(t)
显然(或者至少我认为)我收到错误 NameError: global name 'todo' is not defined 我已经尝试使用 task.add(t) 并得到 TypeError: add() 需要 4 个参数(给定 2 个)
我也尝试使用 Tasks.add(t) 并得到错误 TypeError: unbound method add() must be called with Tasks instance as first argument (得到列表实例代替)
我显然不明白代码,你能解释一下吗,谢谢。
编辑 3 while True: menu_choice = int(input("Select a number from the menu"))
try:
if menu_choice == 1:
task = raw_input ("task")
date = raw_input ("date")
priority = raw_input ("priority")
tasks = Tasks([(task,date,priority)])
print tasks
elif menu_choice == 2:
print tasks
elif menu_choice == 3:
tasks.save()
elif menu_choice == 4:
tasks.load()
except:
print sys.exc_info()
这每次都会重写任务而不是附加它,有什么想法吗?菜单选项 2,3,4 也不起作用,因为任务不是全局定义的,不知道如何解决这个问题?也许回来?