I / O无法写入文件

时间:2018-03-18 22:11:52

标签: python

  

编写一个名为uniqueWords的函数,它计算了多少不同的函数   输入文件的每一行中都有单词,并写入计数   输出文件的对应行。输入文件已存在   当调用uniqueWords时。 uniqueWords创建输出文件。

     

输入。函数uniqueWords有两个参数:

     
      
  • inFile,一个字符串,是要读取的文本文件的名称。 inFile引用的文件仅包含小写字母   和空格(没有标点符号或其他特殊字符)。

  •   
  • outFile,一个字符串,是uniqueWords写入其输出的文件的名称。

  •   
     

输入文件位于当前工作目录中。独特的话应该   在该目录中创建输出文件。

     

输出。对于inFile的每一行,uniqueWords应该向包含单个整数的outFile写一个对应的行:   在线上的独特单词。

     

如果文件turn.txt的内容低于,

     是时候建立一个时间来分解跳舞的时间了   哀悼时间扔石头一起收集石头的时间

     

函数调用

uniqueWords('turn.txt', 'turnOut.txt')
     

应使用以下内容创建名为turnOut.txt的文件:

7
5
8

这是我到目前为止所得到的:

def uniqueWords(file_input, file_output):
    for line in file_input:
        words = line.split(" ")
        uniqueWords = set(words)
        total = len(uniqueWords)
        file_output.write(str(total) + "\n")

file_input = open("turn.txt", "r")
file_output = open("turnOut.txt", "w")
uniqueWords('turn.txt', 'turnOut.txt')

代码给出了以下错误:

  

file_output.write(str(total)+“\ n”)AttributeError:'str'对象没有属性'write'

1 个答案:

答案 0 :(得分:1)

您收到该错误的原因是您将字符串传递给函数。

您将文件名称传递给uniqueWords,而不是文件本身。 open创建一个文件对象,您可以写入该对象,因为它具有write方法。你应该传递那个对象。正确的代码是。

def uniqueWords(file_input, file_output):
    for line in file_input:
        words = line.split(" ")
        uniqueWords = set(words)
        total = len(uniqueWords)
        file_output.write(str(total) + "\n")

file_input = open("turn.txt", "r")
file_output = open("turnOut.txt", "w")
uniqueWords(file_input, file_output)
file_input.close()
file_output.close()

另外,请务必在完成后关闭打开的文件。