1

大家好,这是我要运行的代码。我不是计算机科学家,我知道这是一个简单的答案,我只是没有工具来回答它。我正在尝试将此列表打印到文本文件中。如果我打印到屏幕上,它会起作用。我得到的错误是:“TypeError:期望一个字符缓冲区对象”

这是代码

input = open('Tyger.txt', 'r')
text = input.read()
wordlist = text.split()

output_file = open ('FrequencyList.txt','w')
wordfreq = [wordlist.count(p) for p in wordlist]

#Pair words with corresponding frequency

dictionary = dict(zip(wordlist,wordfreq))

#Sort by inverse Frequency and print

aux = [(dictionary[key], key) for key in dictionary]
aux.sort()
aux.reverse()

for a in aux: output_file.write(a)

谢谢!

4

2 回答 2

4

正如我在上面的评论中所说,更改output_file.write(a)output_file.write(str(a)). 当您print执行某些操作时,Python 会尝试对您正在打印的任何内容进行隐式字符串转换。这就是为什么printing 一个元组(就像你在这里所做的那样)有效。 file.write()没有隐式转换,所以你必须自己用str().

如对此答案的评论中所述,您可能需要调用.close()该文件。

于 2012-06-07T13:55:46.640 回答
0

你可以像这样编写代码:

input = open('tyger.txt','r').read().split()
......
.........
............
for a in aux:
    output_file.write(str(a))
    output_file.close()

您必须close()将打开的文件写入文件,否则您将无法使用该文件。

于 2012-06-07T17:33:05.263 回答