Python TypeError: ‘str’ no admite la interfaz de búfer

Tengo el siguiente código que estaba funcionando bien y luego comencé a lanzar este error. Tengo un archivo csv en el que estoy tratando de escribir una fila. Si bien otras soluciones implican convertir primero las cosas en una cadena de bytes, ya que estoy trabajando con un CSV, no estoy seguro de poder hacerlo.

Código:

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) 

Error:

 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:','Mail Server:','TLS:','# of Employees:','Verified:']) TypeError: 'str' does not support the buffer interface 

En Python 3, el módulo csv espera que le des un archivo en modo texto :

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

El argumento newline='' le da al módulo csv control sobre cómo se escriben las nuevas líneas (la razón por la cual en Python 2 abrió el archivo en modo binario).

De la documentación de csv.writer() :

Si csvfile es un objeto de archivo, debe abrirse con newline='' .

[…]

Si no se especifica newline='' , las nuevas líneas incrustadas dentro de los campos entre comillas no se interpretarán correctamente, y en las plataformas que usan \r\n linendings on write extra se agregarán. Siempre debe ser seguro especificar newline='' , ya que el módulo csv realiza su propio manejo de nueva línea ( universal ).

Debido a que le dio al módulo un archivo en modo binario, solo puede escribir datos de bytes en él.