首页 > 解决方案 > 更改文本文件中的正确对象

问题描述

任务:如果用户选择“vm”查看分配给他们的任务,只显示所有已分配给当前登录用户的任务,以一种用户友好、易于阅读的方式显示。确保每个任务都显示有相应的数字,可用于识别任务。允许用户通过输入数字或输入“-1”来选择特定任务以返回主菜单。如果用户选择特定任务,他们应该能够选择将任务标记为完成或编辑任务。如果用户选择将任务标记为完成,则描述任务是否已完成的“是”/“否”值应更改为“是”。当用户选择编辑任务时,可以编辑分配任务的人员的用户名或任务的截止日期。

def view_more():
        username = input("Please enter the username which you want to view the tasks for?\n")
        num_task = 0     
        view_more = open('tasks.txt', 'r')
        for row in view_more:
                field = row.strip().split(",")
                num_task += 1
                if username == field[0]:
                        print("Task Number: " + str(num_task) + "\nUsername: " + field[0] + "\nTitle: " + field[1] + "\nDescription: " + field[2] + "\nDue Date: " + field[3] + "\nCompleted: " + field[4] + "\n")

        editTask = input("Would you like to edit a task? (Edit) or return to the menu? (-1)\n")
        if editTask == "Edit":
            taskNum = int(input("Please enter the Task number?\n"))
            taskNum = taskNum - 1
            file = open('tasks.txt', 'r')
            taskFile = file.readlines()
            for line in taskFile:
                print(taskFile[taskNum] + "\n")
                break

            taskComplete = input("Has this task been completed?\n")
            if taskComplete == "Yes":
                userTask = taskFile[taskNum].strip().split(",")
                userTask[4] = "Yes"
                print(userTask)

            elif taskComplete == "No":
                userTask = taskFile[taskNum].strip().split(",")
                userTask[4] = "No"
                file.write(userTask[4])

        elif editTask == "-1":
            displayMenu()

view_more()

问题:我现在如何将文本文件中的“否”更改为“是”?我已经设法读取文本文件并更改列表中需要的内容并打印出我想要的内容,但我知道也需要在文本文件中进行更改。感谢任何帮助将不胜感激。

任务文本文件:

admin,test,test,29/03/2020,No
admin,test2,test2,01/04/2020,No

标签: pythondictionarytexttask

解决方案


首先,用用户输入替换选定的任务:

new_state = taskFile[taskNum].strip().replace(userTask[4], taskComplete)

使用新任务更新您的文件数据:

updated_string = view_more.replace(taskFile[taskNum].strip(), new_state)

将更新后的数据写入文件:

with open('tasks.txt', 'w') as f:
   f.write(updated_string)
def view_more():
    username = input("Please enter the username which you want to view the tasks for?\n")
    num_task = 0
    with open('tasks.txt', 'r') as f:
        view_more = f.read()
    for row in view_more:
            field = row.strip().split(",")
            num_task += 1
            if username == field[0]:
                    print("Task Number: " + str(num_task) + "\nUsername: " + field[0] + "\nTitle: " + field[1] + "\nDescription: " + field[2] + "\nDue Date: " + field[3] + "\nCompleted: " + field[4] + "\n")

    editTask = input("Would you like to edit a task? (Edit) or return to the menu? (-1)\n")

    def _edit_file(taskComplete):
        userTask = taskFile[taskNum].strip().split(",")
        new_state = taskFile[taskNum].strip().replace(userTask[4], taskComplete)
        print(new_state)
        updated_string = view_more.replace(taskFile[taskNum].strip(), new_state)
        with open('tasks.txt', 'w') as f:
            f.write(updated_string)

    if editTask == "Edit":
        taskNum = int(input("Please enter the Task number?\n"))
        taskNum = taskNum - 1
        with open('tasks.txt', 'r') as file:
            taskFile = file.readlines()
        for line in taskFile:
            print(taskFile[taskNum] + "\n")
            break

        taskComplete = input("Has this task been completed?\n")
        if taskComplete == "Yes":
            _edit_file(taskComplete)

        elif taskComplete == "No":
            _edit_file(taskComplete)

    elif editTask == "-1":
        displayMenu()

view_more()


推荐阅读