Изменение правильного объекта в текстовом файле - PullRequest
0 голосов
/ 01 апреля 2020

Задача: если пользователь выбирает «vm» для просмотра назначенных ему задач, отображать только задачи, назначенные пользователю, вошедшему в систему в данный момент, в удобном для пользователя, удобном для чтения виде. , Убедитесь, что каждая задача отображается с соответствующим номером, который можно использовать для идентификации задачи. Разрешить пользователю выбирать либо заданную задачу c, введя число или введя «-1», чтобы вернуться в главное меню. Если пользователь выбирает заданную задачу c, он должен иметь возможность либо пометить задачу как завершенную, либо отредактировать задачу. Если пользователь решает пометить задачу как завершенную, значение «Да» / «Нет», которое описывает, была ли задача выполнена или нет, следует изменить на «Да». Когда пользователь выбирает редактирование задачи, можно редактировать имя пользователя, которому назначена задача, или срок выполнения задачи. Задание можно редактировать только в том случае, если оно еще не выполнено.

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()

Вопрос: Как бы мне теперь go поменять «Нет» на «Да» в текстовом файле? Мне удалось прочитать текстовый файл и изменить то, что нужно в списке, и распечатать то, что я хочу, но я знаю, что нужно изменить его и в текстовом файле. Спасибо, любая помощь будет принята с благодарностью.

Задачи Текстовый файл:

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

1 Ответ

0 голосов
/ 02 апреля 2020

Сначала замените выбранную задачу пользовательским вводом:

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()

...