在Python 3中,该csv
模块希望您以 文本模式 为其提供文件:
with open('data.csv', 'w', newline='') as out:
@H_419_9@该
newline=''
参数使csv
模块可以控制换行符的编写方式(在Python 2中以二进制模式打开文件的原因)。如果 csvfile 是文件对象,则应使用打开
newline=''
。[…]
如果
newline=''
未指定,则嵌入引号字段中的换行符将无法正确解释,并且在使用\r\n
lindings的平台\r
上将添加额外内容。newline=''
由于csv模块会执行其自己的(通用 )换行处理,因此始终应该安全地指定。由于您为模块提供了二进制模式文件,因此只能向其中写入
bytes
数据。解决方法
我有下面的代码工作正常,然后开始引发此错误。我有一个要写入一行的csv文件。尽管其他解决方案首先需要将内容转换为字节字符串,但是由于我使用的是csv,因此我不确定是否可以这样做。
码:
def saveFile(): with open('data.csv','wb') as out: csv_out=csv.writer(out) csv_out.writerow(['Domain:','Mail Server:','TLS:','# of Employees:','Verified:']) for row in root.pt.get_rows(): #csv_out.writerow(row) print (row)
错误:
Traceback (most recent call last): File "C:\Python34\lib\tkinter\__init__.py",line 1487,in __call__ return self.func(*args) File "C:/Users/kylec/Desktop/DataMotion/Python/MailChecker.py",line 93,in saveFile csv_out.writerow(['Domain:','Verified:']) TypeError: 'str' does not support the buffer interface
def saveFile():
with open('data.csv','wb') as out:
csv_out=csv.writer(out)
csv_out.writerow(['Domain:','Mail Server:','TLS:','# of Employees:','Verified:'])
for row in root.pt.get_rows():
#csv_out.writerow(row)
print (row)
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py",line 1487,in __call__
return self.func(*args)
File "C:/Users/kylec/Desktop/DataMotion/Python/MailChecker.py",line 93,in saveFile
csv_out.writerow(['Domain:','Verified:'])
TypeError: 'str' does not support the buffer interface
该newline=''
参数使csv
模块可以控制换行符的编写方式(在Python 2中以二进制模式打开文件的原因)。
如果 csvfile 是文件对象,则应使用打开newline=''
。
[…]
如果newline=''
未指定,则嵌入引号字段中的换行符将无法正确解释,并且在使用\r\n
lindings的平台\r
上将添加额外内容。newline=''
由于csv模块会执行其自己的(通用 )换行处理,因此始终应该安全地指定。
由于您为模块提供了二进制模式文件,因此只能向其中写入 bytes
数据。
我有下面的代码工作正常,然后开始引发此错误。我有一个要写入一行的csv文件。尽管其他解决方案首先需要将内容转换为字节字符串,但是由于我使用的是csv,因此我不确定是否可以这样做。
码:
错误:
该newline=''
参数使csv
模块可以控制换行符的编写方式(在Python 2中以二进制模式打开文件的原因)。
如果 csvfile 是文件对象,则应使用打开newline=''
。
[…]
如果newline=''
未指定,则嵌入引号字段中的换行符将无法正确解释,并且在使用\r\n
lindings的平台\r
上将添加额外内容。newline=''
由于csv模块会执行其自己的(通用 )换行处理,因此始终应该安全地指定。
由于您为模块提供了二进制模式文件,因此只能向其中写入 bytes
数据。