Невозможно добавить данные в файл независимо от того, что я делаю - PullRequest
2 голосов
/ 07 июня 2019

Мой код следующий:

generated_quote = '  '.join(generated) + '\n'
    generated_quote = str(generated_quote).encode('utf-8')
    with open("generated_quotes.txt", 'a') as f:
        f.write(generated_quote)

Я искал ответы в Интернете, но все, что я мог получить, это либо «закодировать его» (что я и сделал), либо использовать «a» вместо «w» в операторе open (что я и сделал) , Эта программа выдает ошибку:

write() argument must be str, not bytes

Я перепробовал множество комбинаций множества исправлений, но я не могу заставить его работать, несмотря ни на что. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 07 июня 2019

Когда вы кодируете строку, как вы это сделали с .encode('utf-8'), вы в итоге получаете строку байтов.

Чтобы иметь возможность записать (или добавить) байтовую строку в файл, вам необходимо открыть файл с двоичным флагом. Поэтому вместо a вы должны использовать ab примерно так:

generated_quote = '  '.join(generated) + '\n'
generated_quote = str(generated_quote).encode('utf-8')
with open("generated_quotes.txt", 'ab') as f:
    f.write(generated_quote)
...