2017-09-13 123 views
1

我正在用Python3.6编写一个简单的脚本,并且正在使用csv模块创建一个csv文件。我的代码附在下面,并且是我在网上找到的多个示例的副本,但是当我运行代码时,出现错误消息TypeError: a bytes-like object is required, not a 'str'如何使用python写入.csv文件

import csv 
File_Name = Test.csv 
with open(File_Name, 'wb') as csvfile: 
    filewriter = csv.writer(csvfile,delimiter=',') 
    filewriter = writerow(['Paul','Mary']) 
+0

使用'用打开(File_Name,'w')作为csvfile' – ettanany

+2

'writerow'从哪里来?您正在重写'filewriter' –

+0

在Python 3.x中,打开csv文件进行写入的正确方法是将open(打开(File_Name,'w',newline ='')作为csvfile:',如示例中所示[documentation。](https://docs.python.org/3/library/csv.html#csv.writer)。您还需要使用'filewriter.writerow(['Paul','Mary'])''。 – martineau

回答

2

如果您不需要二进制模式,您可以使用此:

with open(File_Name, 'w') as csvfile: 
    filewriter = csv.writer(csvfile,delimiter=',') 
    filewriter.writerow(['Paul','Mary']) 

检查表here看到我们提供的不同模式的细节。

1

的事情是,你打开文件进行二进制模式

with open(File_Name, 'wb') as csvfile: 

这意味着,从文件中读取所有数据返回字节对象,而不是海峡。 如果你不需要它,尝试:

with open(File_Name, 'w') as csvfile: 

你也应该使用csvwriterwriterow方法,而不是将其重新分配:

file_writer.writerow(['Paul','Mary']) 
3

csvwriter实例不应该被重新分配给。它应该用于写入行。

在python 3中,你应该以只写模式打开文件newline=''documentation

import csv 

filename = 'Test.csv' 

with open(filename, 'w', newline='') as csvfile: 
    file_writer = csv.writer(csvfile,delimiter=',') 
    file_writer.writerow(['Paul','Mary']) 
2

你必须从改变的WB'到 'W' 和文件名应该是在引号( “Test.csv” 或 'Test.csv')请参见下面

import csv 
File_Name = "Test.csv" 
with open(File_Name, 'w') as csvfile: 
    filewriter = csv.writer(csvfile,delimiter=',') 
    filewriter.writerow(['Paul','Mary'])