在Python 3.5.1下启动时,以下代码会产生错误:
文件" D:/Python/Kut/exceltocsv.py",第22行,在sheets_tocsv中 writobj.writerow([在rowvalues中输入的条目])
TypeError:需要类似字节的对象,而不是' str'
有人可以帮我修理吗? (我故意使用openpyxl而不是xlrd。)
import os
import openpyxl
import csv
def sheets_tocsv(file, place):
workbook = openpyxl.load_workbook(file)
sheetnames = workbook.get_sheet_names()
for sheetname in sheetnames:
worksheet = workbook.get_sheet_by_name(sheetname)
csv_file = open(''.join([place, sheetname, '.csv']), 'wb')
writobj = csv.writer(csv_file, quoting=csv.QUOTE_ALL)
for row in range(worksheet.get_highest_row()):
rowvalues = []
for i in worksheet.rows[row]:
rowvalues.append(str(i.value))
writobj.writerow([entry.encode() for entry in rowvalues])
csv_file.close()
答案 0 :(得分:0)
这是未记录的,但Python 3的csv
期望您的文件以文本而不是字节模式打开。
(另外,从文档中,您应该在newline=''
来电中设置open
。
尝试open(filename, 'w', newline='', encoding='utf-8')