2

我正在尝试编写一个脚本,从以这种格式存储的项目中生成一个排序列表:

&&
任务:
项目:
上下文:
DUE_DATE:
COMPLETION_DATE:
优先级:
%%

我对我正在尝试做的事情背后的逻辑有一个很好的了解,但我对 Python 很陌生,所以我正在努力实现。这是我到目前为止所拥有的:

import sys
import getopt

#add function
if sys.argv[1] == 'add':
    try:
        f = open("todo.txt", "added")
        try:
            f.write("TASK:" + sys.argv[2] + "\n")
            project = raw_input("Please enter the project: ")
            f.write("PROJECT:" + project + "\n")
            context = raw_input("Please enter the context: ")
            f.write("CONTEXT:" + context + "\n")
            duedate = raw_input("Please enter the due date: ")
            f.write("DUE_DATE:" + duedate + "\n")
            completiondate = raw_input("Please enter the completion date: ")
            f.write("COMPLETEION_DATE:" + completiondate + "\n")
            priority = raw_input("Please enter the priority level")
            f.write("PRIORITY:" + priority + "\n")
        finally:
            f.close()
    except IOError:
        pass

#list function
if sys.argv[1] == 'list':
    listnum = 1
    try:
        with open("todo.txt", "r") as f:
                searchlines = f.readlines()
        for i, line in enumerate(searchlines):  
                if "TASK:" in line: 
                    for l in searchlines[i:i+3]: 
                    print listnum, l[5:],   
                    listnum += listnum

    except IOError:
        pass

#complete function
if sys.argv[1] == 'complete':
    listName.pop(args[0]-1);#this pops it out and deletes it.  need to sort into order and from that list. delete that item
#by popping and it will be the -1 of the one from the list.

现在,我的添加功能工作正常。我知道 argeparse(sp?) 可以让我用一行添加所有元数据,但我想我会尽可能简单。目前我的列表功能只是根据文件中的顺序列出所有项目,但它没有任何类型的过滤器功能。它也不显示 TASK: 行下方的元数据。

我想用我的列表函数做的是让默认操作根据优先级对文本文件中的所有项目进行排序。我想在同一行中接受其他搜索“标签”,并让列表函数生成一个任务列表:谁有任意数量的元数据匹配任何搜索标签,我希望过滤后的列表也按优先级排序。

我在想的是使用字母标签作为优先级(A、B 等)并遍历文件中的每个条目。然后,我会将任务名称和所有元数据与每个过滤器标签进行比较。如果发生匹配,我会检查优先级,如果优先级为“A”,则显示条目。如果优先级不是“A”,但发生匹配,我会让某种布尔标志变为 1,让我知道程序在寻找下一级优先级时需要再次遍历列表。

我不知道该怎么做的事情:

  1. 遍历列表并查找匹配项,然后查看优先级。
  2. 使用 TASK 显示过滤或未过滤的列表:枚举行和所有其他行缩进和未枚举。
  3. 一旦显示特定过滤器的所有有效列表候选者,如何让程序停止遍历列表
  4. 不要让以前显示的条目触发导致程序继续寻找更多条目的布尔值。
  5. 如果可能的话,我想完成寻找给定的任务名称,如果找到,删除任务名称和文本文件中接下来的 6 行。

感谢您提供任何帮助!

4

0 回答 0