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)
私のコードの最終的な目的は、タスクマネージャーを生成することです(to doリスト)
上記のコードは[name、date、priority]のリストを生成し、それをtasks.txtというテキストファイルに保存します-これが完全に機能することを認識している限り(p.loadをコメントアウトする限り)。
ただし...load関数はファイルをロードしますが、p.load()をコメントアウトしたときと同じように、ロードするリストを印刷タスクとして印刷できる必要があります。
これにより、最終的には、タスクの削除、並べ替えなどを行うことができるようになります。
前もって感謝します
1行目で言い方がわからなかった悪い質問をお詫びします
編集: リスト形式を保持するピクルスについて考えましたが、引数を印刷タスクとして印刷できるようにするために、引数を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が発生します:グローバル名'todo'が定義されていませんtask.add(t)で試し、TypeErrorを取得します:add()は正確に4つの引数を取ります(2つ指定)
また、Tasks.add(t)を試してみたところ、エラーTypeErrorが発生しました。バインドされていないメソッドadd()は、最初の引数としてTasksインスタンスを使用して呼び出す必要があります(代わりにリストインスタンスを取得します)
私は明らかにコードを理解していません、あなたは明確にしてくれますか、ありがとう。
Trueのときに3 を編集:menu_choice = int(input( "メニューから数値を選択"))
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は、タスクがグローバルに定義されていないため機能しません。これを回避する方法がわかりませんか?多分戻ってきますか?