在Python中将计数器打印到csv文件错误

时间:2016-12-14 03:57:33

标签: python csv dictionary counter

我似乎遇到了将打印计数器打印到csv文件的问题。我已尝试关注线程Python: Writing Counter to a csv fileHow do you write a counter to a file in order?Python: Writing a dictionary to a csv file with one line for every 'key: value',但似乎我一直遇到问题。

我的计数器格式如下:

>>> print(daysCounter)
Counter({'03/08/2016': 246, '13/12/2016': 220, '22/01/2016': 198, '20/09/2016': 191})

计数器要大得多,但这给出了格式化的想法。

现在我尝试使用(之前已导入csv):

   with open('lifetime_edits.csv', 'wb') as csv_file:
        writer = csv.writer(csv_file)
        for key, value in daysCounter.items():
            writer.writerow([key, value])

我收到错误:

Traceback (most recent call last):
  File "contribs.py", line 138, in <module>
    lifetime_analysis(data)
  File "contribs.py", line 91, in lifetime_analysis
    writer.writerow([key, value])
TypeError: a bytes-like object is required, not 'str'

所以我假设我只是没有正确使用某些东西,而且我完全没有理解发生了什么。如果有人能够解释为什么我会遇到这个问题,如果可能的话如何解决它,我将非常感激。

请注意,最终目标是让上面的计数器打印到以下格式的文件:

03/08/2016,246
13/12/2016,220
22/01/2016,198
20/09/2016,191

非常感谢您的关注和时间。

1 个答案:

答案 0 :(得分:2)

with open('lifetime_edits.csv', 'wb') as csv_file:

这需要一个字节输入,你用'b'模式打开文件,只需使用'w'模式,这个模式的默认输入是str:

with open('lifetime_edits.csv', 'w') as csv_file:

推荐方式:

with open('lifetime_edits.csv', 'w', newline='') as csv_file:
  

如果未指定newline =“,则在引用字段内嵌入换行符   将无法正确解释,并且在使用\ r \ n的平台上       写入额外\ r \ n的线条将被添加。指定newline =“应该总是安全的,因为csv模块自己做了   (普遍)       换行处理。