Замена указанной c строки в текстовом файле переменной - PullRequest
0 голосов
/ 11 июля 2020
 def appendingfile():
        OpenFiles1 = open("modules.txt", "a")
        NewModule = (FreshModule.get())
        ModuleToAppend = (ModuleInput.get())
        for line in OpenFiles1:
            if ModuleToAppend in OpenFiles1:
                OpenFiles1.write(NewModule)

Я не уверен, как заменить указанную строку c в файле python одной из моих переменных. Но прежде чем я смогу увидеть результаты, я получаю сообщение об ошибке unsupportedOperationL not readable, и я не понимаю, как подойти к этой проблеме. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Как показано в документации к этой функции, существует несколько режимов, в которых вы можете открыть файл в python:

'r' для чтения 'w' для записи (перезаписывает существующие файлы) 'a' для добавления (пишет только в конце, это проблема вашего скрипта) '+' для обновления (чтения и записи)

Когда вы открываете в режиме записи или обновления, есть такого рода указатель (позиция поиска), указывающий python, куда писать. Если вы открываете в режиме добавления, этот указатель всегда находится в конце текста, независимо от позиции поиска.

Попробуйте открыть в режиме 'r +' для чтения и обновления.

0 голосов
/ 11 июля 2020

Вы не можете читать из файла, открытого в режиме «a». используйте вместо этого "r +". Это код, который я тестировал

def appendingfile():
    with open("modules.txt", "r+") as OpenFiles1:
        NewModule = "NewModule"
        ModuleToAppend = "ModuleToAppend"
        content = OpenFiles1.read()
        if ModuleToAppend in content:
            OpenFiles1.write(NewModule)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...