Функция Python readlines() игнорирует строку, написанную программой

#python #python-3.x #discord.py

Вопрос:

Я хочу прочитать строки и проверить, есть ли в них определенное число, но при чтении и печати списка со строками я не могу получить 1-ю строку, в которой моя тестовая строка была написана той же программой:

Код, который я использую для записи материала в файл:

 with open('db.txt', 'a') as f:
     f.write(f'Request's channel id from guild {guild.id}:{request_channel_id} n')

 

и код, который я использую для чтения файлов и проверки строк, таков:

 with open('db.txt', 'r') as f:
        index = 0
        for line in f:
            index  = 1
            if str(message.guild.id) in line or str(message.channel.id) in line:
                break

        content = f.readlines()
        print(content)
        content = content[index]
        content.strip(":")
 

Второй блок кода возвращает: [] и пустой список, хотя я открыл его, и строка там есть. Но когда я пишу прямо в файл с клавиатуры, код «видит» случайные вещи, которые я написал.

содержимое файла .txt:

 Id do canal de request servidor 833434062248869899: 888273958263222332
a.a

all
a
a
a
a
 

Ошибка:

 ['a.an', 'n', 'alln', 'an', 'an', 'an', 'a']
Ignoring exception in on_message
Traceback (most recent call last):
  File "C:UsersCARVALHOAppDataLocalProgramsPythonPython39libsite-packagesdiscordclient.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "C:UsersCARVALHOdesktopgabrielcodandomusic_botmain.py", line 48, in on_message
    request_channel_id = int(content[1])
IndexError: string index out of range
 

Комментарии:

1. Вывод и сообщение об ошибке отображаются в вопросе как правильно отформатированный текст, а не как изображение или внешняя ссылка.

2. Строка f.write(f'Request's channel id from guild {guild.id}:{request_channel_id} n') должна содержать синтаксическую ошибку, замените ее на f.write(f'Request's channel id from guild {guild.id}:{request_channel_id} n')

3. Файловый объект запоминает, где он читал или писал в последний раз. Когда вы вызываете «f.readlines ()», он считывает и возвращает только строки после строки, которая выполнила условие if. Решение: Просто повторно используйте уже прочитанную «строку» после цикла for вместо вызова «readlines».

4. Я не знал о том, что файловый объект запоминает строки, которые он читал/писал, но это сработало. Спасибо! :)) И насчет»», которое может вызвать ошибку, в оригинале так не написано, я перевел с португальского, чтобы дать лучшее представление о том, что я пытался написать.