我似乎遇到了将打印计数器打印到csv文件的问题。我已尝试关注线程Python: Writing Counter to a csv file,How 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
非常感谢您的关注和时间。
答案 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模块自己做了 (普遍) 换行处理。