TypeError:'str'不支持缓冲区接口,Python 3

Pre*_*sen 2 python csv

我有很多CSV文件,我希望他们加入一个txt文件binary格式..
以下代码给出了上述错误:

import os
from csv import reader
from csv import writer

CONST_DATA_DIR = "F:/Data/"
CONST_DATABIN_DIR = "F:/DataBinary/"


def createFilesArr():
    filesArr = []
    os.chdir(CONST_DATA_DIR)
    for file in os.listdir("."):
        if file.endswith(".csv"):
            filesArr.append(file)
    return filesArr


filesArr = createFilesArr()

newFileName = "oneBinaryFile.txt"
newFile = open(CONST_DATABIN_DIR + newFileName, 'wb')

for file in filesArr:
    currentFile = open(CONST_DATA_DIR + file, 'r', newline='', encoding='UTF8')
    newFile.write(currentFile.read())
    currentFile.close()

newFile.close() 
Run Code Online (Sandbox Code Playgroud)

编辑:
CSV文件最初是写成一个txt类型.另一方面,合并文件应该是二进制格式.
创建CSV文件的过程很复杂,因此,如果可能的话,我更喜欢在阅读之前以某种方式转换文件.
有什么建议?

ole*_*leg 7

Python区分二进制和文本I/O.

newFile = open(CONST_DATABIN_DIR + newFileName, 'wb')
Run Code Online (Sandbox Code Playgroud)

以二进制模式打开的文件(包括mode参数中的'b')将内容作为字节对象返回,而不进行任何解码.

currentFile = open(CONST_DATA_DIR + file, 'r', newline='', encoding='UTF8')
newFile.write(currentFile.read())
Run Code Online (Sandbox Code Playgroud)

在文本模式下(默认情况下,或者当't'包含在mode参数中时),文件的内容将返回为str,字节首先使用平台相关编码进行解码,或者使用指定的编码(如果给定).

所有流都要注意您提供给它们的数据类型.例如,将str对象赋予write()二进制流的方法将引发一个TypeError.因此,将一个bytes对象赋予文本流的write()方法.