【问题标题】:Python - a bytes-like object is required, not 'str'Python - 需要一个类似字节的对象,而不是“str”
【发布时间】:2017-02-21 15:08:44
【问题描述】:

我在这里有一个简单的 Python sn-p,它将宏 Excel 工作表复制到 csvs 中。 sn-p 因某种奇怪的原因而爆炸。我曾经用Python 2.7 运行这个sn-p 并且没有问题。我最近下载了Python 3.6。我该如何解决这个问题?

import csv
import xlrd

workbook = xlrd.open_workbook('P:/LFC Lots and Sales-NEW.xlsm')
for sheet in workbook.sheets():
with open('{}.csv'.format(sheet.name), 'wb') as f:
    writer = csv.writer(f)
    writer.writerows(sheet.row_values(row) for row in range(sheet.nrows))
print ("Sheets copied")

追溯:

writer.writerows(sheet.row_values(row) for row in range(sheet.nrows))
TypeError: a bytes-like object is required, not 'str'

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    知道了!我需要做的就是将wb 更改为w

    import csv
    import xlrd
    
    workbook = xlrd.open_workbook('P:/LFC Lots and Sales-NEW.xlsm')
    for sheet in workbook.sheets():
    with open('{}.csv'.format(sheet.name), 'w') as f:
        writer = csv.writer(f)
        writer.writerows(sheet.row_values(row) for row in range(sheet.nrows))
    print ("Sheets copied")
    

    【讨论】:

    • 使用 python 3,您还需要打开 newline='' -- 请参阅文档 here 并阅读脚注 #1。
    猜你喜欢
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2016-11-27
    • 1970-01-01
    • 2016-01-05
    相关资源
    最近更新 更多