您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python TypeError:“ str”不支持缓冲区接口

Python TypeError:“ str”不支持缓冲区接口

在Python 3中,该csv模块希望您以 文本模式 为其提供文件

with open('data.csv', 'w', newline='') as out:
@H_419_9@

newline=''参数使csv模块可以控制换行符的编写方式(在Python 2中以二进制模式打开文件的原因)。

csv.writer()文档中

如果 csvfile文件对象,则应使用打开newline=''

[…]

如果newline=''未指定,则嵌入引号字段中的换行符将无法正确解释,并且在使用\r\nlindings的平台\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中以二进制模式打开文件的原因)。

csv.writer()文档中

如果 csvfile文件对象,则应使用打开newline=''

[…]

如果newline=''未指定,则嵌入引号字段中的换行符将无法正确解释,并且在使用\r\nlindings的平台\r上将添加额外内容newline=''由于csv模块会执行其自己的(通用 )换行处理,因此始终应该安全地指定。

由于您为模块提供了二进制模式文件,因此只能向其中写入 bytes 数据

我有下面的代码工作正常,然后开始引发此错误。我有一个要写入一行的csv文件。尽管其他解决方案首先需要将内容转换为字节字符串,但是由于我使用的是csv,因此我不确定是否可以这样做。

码:

错误:

newline=''参数使csv模块可以控制换行符的编写方式(在Python 2中以二进制模式打开文件的原因)。

csv.writer()文档中

如果 csvfile文件对象,则应使用打开newline=''

[…]

如果newline=''未指定,则嵌入引号字段中的换行符将无法正确解释,并且在使用\r\nlindings的平台\r上将添加额外内容newline=''由于csv模块会执行其自己的(通用 )换行处理,因此始终应该安全地指定。

由于您为模块提供了二进制模式文件,因此只能向其中写入 bytes 数据

python 2022/1/1 18:49:57 有341人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶