【问题标题】:Error in writing a dictionary to a file将字典写入文件时出错
【发布时间】:2013-07-07 11:08:11
【问题描述】:

我正在尝试将字典 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

如何正确地将字典写入文本文件。

【问题讨论】:

  • 我了解到您有一本字典。我想知道字典in是什么。事实证明这是一个有争议的问题。
  • 您需要更清楚地了解您希望在写入后在文件中找到的内容。包括示例输入和输出会有所帮助。

标签: python


【解决方案1】:

在 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

【讨论】:

  • 这只会写入字典值,而我也需要键。
  • @user2192774 嗯,这是另一个不相关的问题。更新了解决方案。这个问题没有解释invIndex 中的确切内容,所以我添加了一个示例值。
  • 我的字典类似于:{'first':{0,1,2}, 'second':{2,3}, etc .. }。当我在数据中尝试您的脚本时,出现错误:Traceback (most recent call last): File "&lt;stdin&gt;", line 2, in &lt;module&gt; KeyError: 0
  • @user2192774 好吧,{0,1,2} 是一个集合,它是无序的。您确定您的值不是列表吗?在任何演员阵容中,您期望什么输出?
  • 是的,我确定它们是套装。我只想将字典写入文本文件或 csv。整个目的是字典很长,所以我无法查看 cmd 中的所有值。因此,我决定将其写入文件。
猜你喜欢
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2020-08-26
相关资源
最近更新 更多