2017-09-13 121 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'])