2013-07-07 112 views
0

我正在尝试将字典invIndex写入文本文件。我发现下面的帖子:将字典写入文件时出错

我写这几行:

import csv 
f = open('result.csv','wb') 
w = csv.DictWriter(f,invIndex) 
w.writerow(invIndex) 
f.close() 

当我到达这条线:w.writerow(invIndex),我得到这个错误:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python33\lib\csv.py", line 153, in writerow 
    return self.writer.writerow(self._dict_to_list(rowdict)) 
TypeError: 'str' does not support the buffer interface 

我怎么能写一本字典来一个正确的文本文件。

+1

我明白你有一本字典。我想知道字典中的*是什么。事实证明,这是一个有争议的问题。 –

+1

您需要在写作后期望在文件中找到更清晰的内容。包括示例输入和输出将有所帮助。 –

回答

2

在Python 3中,csv编写者和读者期望一个文本流,但open(.., 'wb')(或更确切地说,b创建一个字节流)。尝试:

import csv 
invIndex = [ 
    {'fruit': 'apple', 'count': '10'}, 
    {'fruit': 'banana', 'count': '42'}] 
with open('result.csv', 'w', encoding='utf-8') as f: 
    w = csv.DictWriter(f, invIndex[0].keys()) 
    w.writeheader() 
    w.writerows(invIndex) 

替换utf-8与您要使用的encoding。它会写如

fruit,count 
apple,10 
banana,42 
+0

这只写字典值,而我也需要键。 – user2192774

+0

@ user2192774那么,这是另一个无关的问题。更新了解决方案。这个问题并没有解释'invIndex'中的究竟是什么,所以我添加了一个示例值。 – phihag

+0

我的字典是这样的:'{'first':{0,1,2},'second':{2,3}等。}'。当我在我的数据中尝试脚本时,出现错误:'Traceback(最近一次调用最后一个): 文件“”,第2行,在 KeyError:0' – user2192774