Считать слова в.txt, а затем записывать результаты в том же.txt
Я пытаюсь посчитать количество слов в текстовом документе, а затем записать сумму обратно в.txt
вот как далеко у меня
words = 0
f = open("count.txt", 'r+')
for wordcount in f.readline().split(" "):
words += 1
print('number of words ')
print(words)
f.write("number of words ")
f.write(words)
f.close()
Я получаю эту ошибку
TypeError: expected a character buffer object
Куда я иду не так?
я так чувствую f.write(words)
не правильный способ записать сумму в TXT?
4 ответа
Вы должны конвертировать words
в строку, прежде чем можно будет записать его в файл.
with open("count.txt", "r+") as f:
words = len(f.read().split())
print('number of words ')
print(words)
f.write("number of words ")
f.write(str(words))
Более того:
readline
читает только одну строку. использование read
прочитать весь файл.
использование len
подсчитать размер списка, внутри подсчитать его самостоятельно
использование with
чтобы убедиться, что файл будет закрыт
file.write
принимает только текстовый буфер, поэтому вам нужно привести words
в строку, прежде чем записать ее в файл:
f.write(str(words))
f.write
требует строку в качестве аргумента, в отличие от print
, который будет принимать любое количество объектов любого вида, автоматически конвертировать их в строки для вас, соединять их с настраиваемыми разделителями и настраиваемым окончанием и так далее.
Другими словами, print
умный и дружелюбный; write
это функция низкого уровня. Итак, чтобы сделать эту работу с write
, вы должны сделать преобразование вручную.
f.write(str(words))
Но вы также можете просто использовать print
вместо звонка f.write
:
print(words, file=f)
Обратите внимание, что это не совсем то же самое. Когда вы звоните print
по умолчанию он ставит новую строку в конце. Итак, этот код:
print('number of words ')
print(words)
… Распечатает две отдельные строки:
number of words
3
И также этот код:
print('number of words ', file=f)
print(words, file=f)
… Добавит те же две отдельные строки в файл.
Слова должны быть преобразованы в строку. File.write()
это то, что на самом деле собирается написать это.
Ваш новый код:
f.write("number of words ")
f.write(str(words))