以基本记录jar格式排序和显示列表,该格式基于存储在同一列表中的附加数据存储在文本文件中

时间:2013-03-20 04:15:18

标签: python

我正在尝试编写一个脚本,该脚本使用以下格式存储的项目生成排序列表:

&安培;&安培;
任务:
项目:
背景:
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下面显示元数据:行。

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

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

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

  1. 遍历列表并查找匹配项,然后查看优先级。
  2. 显示已过滤或未过滤的列表,其中包含TASK:枚举的行以及所有其他缩进和未枚举的行。
  3. 如果已显示特定过滤器的所有有效列表候选项,程序将停止遍历列表
  4. 不允许先前显示的条目触发bool,导致程序继续查找更多条目。
  5. 如果可能,我想完成查找给定的任务名称,如果找到,请删除任务名称和文本文件中的后6行。
  6. 感谢您提供任何帮助!

0 个答案:

没有答案