【问题标题】:count words in a .txt then write the results in the same .txt计算 .txt 中的单词,然后将结果写入相同的 .txt
【发布时间】:2018-06-27 22:26:05
【问题描述】:

我正在尝试计算文本文档中的字数,然后将总数写回 .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)是不是把total写入txt的正确方式?

【问题讨论】:

  • 请修正你的代码缩进
  • 我们能否看到完整的错误消息。特别是它在哪条线上。
  • 你在使用 Micropython 吗?如果有,在什么平台上?

标签: python python-3.x micropython


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    file.write 仅接受文本缓冲区,因此您需要先将words 转换为字符串,然后再将其写入文件:

    f.write(str(words))
    

    【讨论】:

      【解决方案3】:

      f.write 需要一个字符串作为其参数,这与print 不同,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)
      

      ... 将相同的两行添加到文件中。

      【讨论】:

        【解决方案4】:

        单词必须转换为字符串。 File.write() 是真正要写的。

        您的新代码:

        f.write("number of words ")
        f.write(str(words))
        

        【讨论】:

          猜你喜欢
          • 2021-06-25
          • 1970-01-01
          • 1970-01-01
          • 2016-06-08
          • 1970-01-01
          • 1970-01-01
          • 2013-07-11
          • 2016-09-07
          • 1970-01-01
          相关资源
          最近更新 更多