类型错误:';str';不支持缓冲区接口,Python 3
我有许多类型错误:';str';不支持缓冲区接口,Python 3,python,csv,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
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()
编辑:CSV
文件最初是以txt
类型编写的。另一方面,合并文件应为二进制格式。创建
CSV
文件的过程很复杂,因此,如果可能的话,我更愿意在阅读之前以某种方式转换文件。有什么建议吗?在二进制模式下打开要写入的文件要求要写入的数据类型是Python 3字节类型而不是str。否则不要在二进制模式下打开文件。Python区分二进制和文本I/O
newFile = open(CONST_DATABIN_DIR + newFileName, 'wb')
以二进制模式打开的文件(包括模式参数中的“b”)将内容作为字节对象返回,而不进行任何解码
currentFile = open(CONST_DATA_DIR + file, 'r', newline='', encoding='UTF8')
newFile.write(currentFile.read())
在文本模式下(默认情况下,或者当模式参数中包含“t”时),文件的内容以str的形式返回,首先使用平台相关编码或指定编码(如果给定)对字节进行解码
所有流都会小心您提供给它们的数据类型。例如,将
str
对象赋予二进制流的write()
方法将引发TypeError
。为文本流的write()方法提供一个bytes对象也是如此。我已经将文件设置为str类型,尽管我需要合并的文件采用二进制格式。我可以做任何转换过程吗?问题已经编辑好了。谢谢你现在的回答。