L'Objet Ne Prend Pas En Charge L'Indexation

Je suis de la création d'un journal de travail en python, où l'utilisateur peut entrer une tâche ou peut recherche une tâche par jour. Ma première invite demande à l'utilisateur d'entrer une tâche ou d'une recherche par date. Si l'utilisateur commence par la recherche par date--le programme fonctionne correctement et affiche toutes les dates. Si un utilisateur commence par l'ajout d'une tâche, et puis en regardant les tâches par date, le programme affiche un "objet ne prend pas en charge l'indexation de l'erreur". Je pense que pour une raison quelconque, la liste est se vider, mais je ne peux pas pour la vie de me comprendre où et quand cela pourrait se produire. Ici est la principale worklog fichier:

import csv
import re
import datetime
from task import Task
from task_list import TaskList
class Worklog():
def __init__(self):
self.filename = "work_log.csv"
self.tasklist = TaskList()
self.tasklist.read_task_from_file(self.filename)
def search_by_date(self):
for d, i in enumerate(self.tasklist.dates()):
print(d+1, ':', i)
# while True:
#     datereq = input("Select Number To See Tasks For A Date").strip().lower()
#     try:
#         datereq = int(datereq)
#         return datereq
#     except ValueError:
#         print("Invalid Entry. Please try again")
#         continue
def search_by_time(self):
pass
def exact_search(self):
pass
def pattern_search(self):
pass
def add_task(self):
task = Task()
task.input_task()
task.input_minutes()
task.input_notes()
task.date = datetime.date.today()
self.tasklist.app_task(task)
self.tasklist.save_task_to_file(self.filename,task)
def lookup_task(self):
if len(self.tasklist.task_list) == 0:
print("Your task log is empty.\n")
input("Hit Enter to add a new task.")
else:
while True:
lookup = input("Lookup by Date(D), Time(T), Exact Search(E) or Pattern(P): ")
lookup.lower()
if lookup == 'd':
self.search_by_date()
break
elif lookup == 't':
self.search_by_time()
break
elif lookup == 'e':
self.exact_search()
break
elif lookup == 'p':
self.pattern_search()
break
else:
print("Sorry invalid option. Please try again")
def start_message(self):
while True:
q = input("Add New Task(1) or Lookup Task(2) or Quit(3): ".strip().lower())
if q == "1":
self.add_task()
elif q == "2":
self.lookup_task()
elif q == "3":
exit()
else:
print("Sorry that's an invalid entry. Please try again.")
continue
if __name__ == '__main__':
log = Worklog()
log.start_message()

L'erreur vers le dates fonction de ce qui est indiqué ci-dessous, avec quelques autres méthodes pour mon "liste des tâches" classe. Est-il un problème avec la façon que je suis d'indexation de cette liste? Ou suis-je en droit en ce que le task_list liste est de se réinitialiser en quelque sorte lorsque l'utilisateur entre dans la deuxième étape de la boucle. Merci:

    def app_task(self, task):
self.task_list.append(task)
def save_task_to_file(self,filename,task):
with open(filename, 'a', newline="\n", encoding="utf-8") as csvfile:
# creating a csv writer object
csvwriter = csv.writer(csvfile, delimiter=",")
# writing the data rows
csvwriter.writerow([task.date, task.task, task.minutes, task.notes])
def read_task_from_file(self,filename):
with open(filename, 'r') as csvfile:
task_reader = csv.reader(csvfile, delimiter=',')
for row in task_reader:
task = Task()
self.task_list.append(row)
return self.task_list
def dates(self):
self.read_task_from_file("work_log.csv")
dates = []
for row in self.task_list:
date = row[0]
if row[0] not in dates:
dates.append(date)
return sorted(dates)

Note--voici un exemple de ce que le work_log.csv fichier ressemble à ceci:

2017-03-23,gardening,30,not really
2017-03-23,bowling,30,none
2017-03-23,bowling,90,none
2017-03-23,bowling,93,none
2017-03-23,baseball,2,none
2017-03-23,bowling,20,none
2017-03-23,base,0,jj
2017-03-23,bowling,33,none

Ajouté par Jake recommandation:

def get_date(self):
for row in self.task_list:
d = row[0]
return d
def dates(self):
dates = []
for row in dates:
date = row.get_date()
if date not in dates:
dates.append(date)
return sorted(dates)
  • Pouvez-vous poster le message d'erreur réel? Ce qui est ceci et ce n'est la trace de la pile ressemble?
  • "C:/Users/c/PycharmProjects/worklog/work_log.py", à la ligne 88, in <module> le journal.start_message() File "C:/Users/c/PycharmProjects/worklog/work_log.py", de la ligne 77, dans start_message auto.lookup_task() File "C:/Users/c/PycharmProjects/worklog/work_log.py", la ligne 54, dans lookup_task auto.search_by_date() File "C:/Users/c/PycharmProjects/worklog/work_log.py", la ligne 15, dans search_by_date pour d, j'en énumérer(de soi.tasklist.dates()): File "C:\Users\c\PycharmProjects\worklog\task_list.py", à la ligne 34, dans dates date = row[0] TypeError: 'Tâche' objet ne prend pas en charge l'indexation