从 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的原因是为了有更好的时间复杂度。您可以使用数据库获得更好的结果
我有一个任务,我必须创建一个 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的原因是为了有更好的时间复杂度。您可以使用数据库获得更好的结果