从 txt 为各种用户分组特定任务。 python 中的文件

Grouping specific tasks for various users from a txt. file in python

我有一个任务,我必须创建一个 txt 文件中列出的每个用户任务的摘要。例如,摘要必须包括分配给每个用户的任务数、已完成的任务数、逾期的任务数等。我想出了一个非常简单的系统,我为每个用户创建了一个列表,但这根本不是模块化的,因为如果创建新用户,它将完全忽略它们。我真的很难想出一些模块化逻辑,所以任何帮助将不胜感激。

文本文件结构如下: 用户名、任务名称、任务描述、截止日期、发布日期、完成(Yes/No) 例如:

james, hello, hello world, 30/Jun/2022, 26 May 2022, Yes

我没有很多代码,因为我不确定从哪里开始,但这是我目前所拥有的:

# For user overview:

# Creating new txt.file for summary to be output in

user_ov = open('user_overview.txt','w+')

# Opening and reading task text file

task_file = open('tasks.txt','r+')
task_content = task_file.readlines()

# Isolating specific users tasks by name

for line in task_content:
    split_task = line.split(", ")
    user_name = split_task_cont[0]
    
    for user_name in task_content:
        user_name = []
        
# Calculating the length of all the created lists  

num_users = len(file_content)

# Writing the values into the txt file

user_ov.write(f"The total number of users is {length_user}\n")
user_ov.write(f"The total number of tasks is {length_task}\n")

您可以使用字典来存储数据,您可以轻松地向其中添加新用户。

示例代码

file_content = {}
with open('user_task_data.txt', 'r') as f:
    for line in f.readlines():
        split_list = line.split(',')
        assert len(split_list) == 6
        
        name = split_list[0].strip()
        task_name = split_list[1].strip()
        task_details = {}
        task_details['task_detail'] = split_list[2].strip()
        task_details['due_date'] = split_list[3].strip()
        task_details['issued_date'] = split_list[4].strip()
        task_details['completed'] = split_list[5].strip()
        tasks = {}
        tasks[task_name] = task_details
        if name in file_content:
            if task_name in file_content[name]:
                file_content[name][task_name].update(task_details)
            else:
                file_content[name][task_name] = task_details
        else: 
            file_content[name] = tasks
            
print('total users: ', len(file_content)) 
print('total tasks: ', sum(len(file_content[user]) for user in file_content))

说输入是

James, task1, task 1 details, 30/Jun/2022, 26 May 2022, Yes
Alan, task2, task 2 details, 03/Jul/2022, 05 Apr 2022, Yes
Bob, task3, task 3 details, 26/Sep/2022, 21 Feb 2022, No
James, task4, task 4 details, 15/Jun/2022, 17 Mar 2022, No

输出将是

{'Alan': {'task2': {'completed': 'Yes', 'due_date': '03/Jul/2022', 'issued_date': '2022 年 4 月 5 日', 'task_detail': 'task 2 details'}}, 'Bob': {'task3': {'completed': 'No', 'due_date': '26/Sep/2022', 'issued_date': '2022 年 2 月 21 日', 'task_detail': 'task 3 details'}}, 'James': {'task1': {'completed': 'Yes', 'due_date': '30/Jun/2022', 'issued_date': '2022 年 5 月 26 日', 'task_detail': 'task 1 details'}, 'task4': {'completed': 'No', 'due_date': '15/Jun/2022', 'issued_date': '2022 年 3 月 17 日', 'task_detail': 'task 4 details'}}}

我使用dict而不是list的原因是为了有更好的时间复杂度。您可以使用数据库获得更好的结果