Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从文本文件中为不同的函数运行计数_Python_Count_External Data Source - Fatal编程技术网

Python 如何从文本文件中为不同的函数运行计数

Python 如何从文本文件中为不同的函数运行计数,python,count,external-data-source,Python,Count,External Data Source,我有一个任务,需要根据文本文件运行某些函数来计算某些文本。我能够自己完成的第一组指令不是基于用户的,它只是文本文件(tasks.txt)中文本项的一般计数。我现在面临的问题是,如何从仅基于用户的文本文件计算某些内容。目前只有一个任务,但如果我有多个任务分配给不同的用户,我将如何仅为该特定用户进行计算?任何建议都将不胜感激 文本文件为:(tasks.txt) 分配给任务的用户: 博比 任务名称: 飞 任务说明: 飞向月球 任务截止日期:2020-04-01 分配日期:2020-03-03 完成的任

我有一个任务,需要根据文本文件运行某些函数来计算某些文本。我能够自己完成的第一组指令不是基于用户的,它只是文本文件(tasks.txt)中文本项的一般计数。我现在面临的问题是,如何从仅基于用户的文本文件计算某些内容。目前只有一个任务,但如果我有多个任务分配给不同的用户,我将如何仅为该特定用户进行计算?任何建议都将不胜感激

文本文件为:(tasks.txt)

分配给任务的用户:

博比

任务名称:

任务说明:

飞向月球

任务截止日期:2020-04-01

分配日期:2020-03-03

完成的任务:

没有

任务编号:

一,

第一组任务:(已完成)

已生成的任务总数

已完成任务的总数

未完成任务的总数

尚未完成且过期的任务总数

未完成任务的百分比

过期任务的百分比

第二组任务(基于用户):

分配给该用户的任务总数

已分配给该用户的任务总数的百分比是多少

分配给该用户的任务已完成的百分比是多少

分配给该用户的任务仍必须完成的百分比是多少

分配给该用户的任务中有多少百分比尚未完成且已过期

到目前为止,我的代码是:

data2 = open('tasks.txt').read()
    count3 = data2.count('Task Title')
    count4 = data2.count('Yes')
    count5 = data2.count('No')

    with open("tasks.txt", "r")as f5:
        today = datetime.datetime.today()
        overdue = 0
        for line in f5:
            if not line.startswith('Task Due Date'): continue
            field, value = line.split(':')
            if field == 'Task Due Date':
                if datetime.datetime.strptime(value.strip(), '%Y-%m-%d') < today:
                    overdue = overdue + 1
            ab = (overdue/count3)*100
            abb = (count5/count3)*100
            print("Total number of tasks: " + str(count3) + "\nTotal number of completed tasks: " + str(count4) + "\nTotal number of incomplete tasks: " + str(count5) + "\n" +
            "The percentage of overdue tasks is: " + str(ab) + "%" + "\n" + "The percentage of incomplete jobs is: " + str(abb) + "%")
            num_lines = sum(1 for line in open('user.txt'))
            print("The number of registered users is: " + str(num_lines) + "\n")
            data3 = open('tasks.txt','r').read()


            usr_check = input("Please input a user name to write details of that user.\n")
            count6 = data3.count(usr_check)
            count7 = (count6/count3)*100
            print("The user " + str(usr_check) + " has total tasks of: " + str(count6) + "\n" + str(usr_check)+ "'s" + " " + "percentage of total tasks is: "
            + str(count7) + "%")
data2=open('tasks.txt').read()
count3=data2.count('任务标题')
count4=data2.count('Yes')
count5=data2.count('No')
打开(“tasks.txt”、“r”)作为f5:
今天=datetime.datetime.today()
过期=0
对于f5中的行:
如果不是line.startswith('Task Due Date'):继续
字段,值=行。拆分(“:”)
如果字段==“任务到期日”:
如果datetime.datetime.strtime(value.strip(),“%Y-%m-%d”)<今天:
过期=过期+1
ab=(逾期/计数3)*100
abb=(计数5/计数3)*100
打印(“任务总数:”+str(count3)+“\n已完成任务总数:”+str(count4)+“\n未完成任务总数:”+str(count5)+“\n”+
过期任务的百分比为:“+str(ab)+”%“+”\n“+”未完成作业的百分比为:“+str(abb)+”%)
num_lines=sum(1表示打开的行('user.txt'))
打印(“注册用户数为:“+str(num_行)+”\n”)
data3=open('tasks.txt','r')。read()
usr_check=input(“请输入用户名以写入该用户的详细信息。\n”)
count6=data3.count(usr\u检查)
count7=(count6/count3)*100
打印(“用户”+str(usr\U检查)+”的总任务数为:“+str(count6)+”\n”+str(usr\U检查)+”的“+”+”,占总任务数的百分比为:
+str(count7)+“%”)

您可以先读取文件,创建对象(类任务),然后为每个任务创建一个新类,将其附加到包含这些对象的数组中

对象应该包含

  • 使用者
  • 头衔
  • 日期
以及每一个重要信息,以便以后您可以轻松地使用它们

然后,您可以运行该列表并计算任务的数量(是的,len()是一种更好的方法),您可以创建一个字典,并以友好的方式添加键(分配给任务的用户),计算有多少任务对应于特定用户,以及您需要完成的所有过程

更好的是在字典中,您可以使用一个普通的列表来包含与用户对应的对象,这样您可以计算该列表,您可以通过执行或不执行对对象进行分组,等等

特定的数据结构更易于使用。我建议使用类来完成任务