计算 .txt 中的单词数,然后将结果写入同一个 .txt

count words in a .txt then write the results in the same .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 的正确方法?

file.write 只接受文本缓冲区,所以你需要先将 words 转换为字符串,然后再将其写入文件:

f.write(str(words))

您必须先将 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确保文件将被关闭

f.write requires a string as its argument, unlike 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))