Python csv.DictWriter生成一个空白的0字节csv文件

Python csv.DictWriter生成一个空白的0字节csv文件,python,python-3.x,csv,Python,Python 3.x,Csv,我有一些代码,应该处理一个非空的csv文件。但是,当我运行此代码时,它会生成一个空白的0字节csv文件。我在python 3上使用excel和OS X。以下是DictWriter代码: with open(self.SALES_SHEET,'wb') as sf: fieldnames = ['first_name','last_name'] writer = csv.DictWriter(sf, fieldnames=fieldnames) writer.writ

我有一些代码,应该处理一个非空的csv文件。但是,当我运行此代码时,它会生成一个空白的0字节csv文件。我在python 3上使用excel和OS X。以下是DictWriter代码:

with open(self.SALES_SHEET,'wb') as sf:
     fieldnames = ['first_name','last_name']
     writer = csv.DictWriter(sf, fieldnames=fieldnames)
     writer.writeheader()
     writer.writerow({'first_name': 'Zach' ,'last_name': 'B'})

我不知道我的错误是什么。无论我用多少种方式重写它,我最终都会得到一个空白的csv。

假设您将
wb
修改为
w
self.SALES\u SHEET
是一个有效值,它应该可以工作。我最终得到了一个正确的CSV,代码如下:

import csv

csv_filename = "test.csv"

with open(csv_filename,'w') as sf:
     fieldnames = ['first_name','last_name']
     writer = csv.DictWriter(sf, fieldnames=fieldnames)
     writer.writeheader()
     writer.writerow({'first_name': 'Zach' ,'last_name': 'B'})

除非我遗漏了什么,否则这些代码不应该在Python3中运行。您应该得到类似于
TypeError的内容:需要一个类似字节的对象,而不是'str'
,因为您以错误的模式打开文件。@DSM我已将其更改为
w
,生成的csv仍然是空的。是的,但既然您说第一个代码生成的是空的csv,我很有信心Python 3中从未执行过代码,很难知道您认为正在进行的其他事情中有哪些没有发生(例如,可能您在使用块离开
之前正在查看文件,因此文件尚未刷新)。请将您的代码设置为独立的。您确定文件保存在您认为的位置吗?@Sleepy-Z能否详细说明Excel在此过程中可能扮演的角色?您是如何尝试在Python脚本中使用Excel的?我认为这可能是一个与OS/Excel版本相关的问题。我在工作程序中遇到了类似的错误:如果我通过excel的退出保存通知保存文件,如果我再次运行该程序,文件将立即变为空白。我决定最终学习熊猫,现在我的数据表看起来很棒。