Python 3.x 类型错误:';发电机&x27;对象在python中不可下标

Python 3.x 类型错误:';发电机&x27;对象在python中不可下标,python-3.x,Python 3.x,我是python新手,正在努力学习 我正在使用下面的代码阅读excel电子表格,但出现以下错误。 有人能帮我解决这个问题吗?或者代码有什么问题 import openpyxl import os if not os.path.isfile('C:\Python\Python36\EBC_N_Bhatt_Anilkumar _Team - 06132018.xlsx'): raise Exception('File does not exist.') wb = openpyxl.

我是python新手,正在努力学习

我正在使用下面的代码阅读excel电子表格,但出现以下错误。 有人能帮我解决这个问题吗?或者代码有什么问题

import openpyxl   
import os

if not os.path.isfile('C:\Python\Python36\EBC_N_Bhatt_Anilkumar _Team - 06132018.xlsx'):
    raise Exception('File does not exist.')

wb = openpyxl.load_workbook('C:\Python\Python36\EBC_N_Bhatt_Anilkumar _Team - 06132018.xlsx')    

sheet_ind = 0

sheet_names = wb.get_sheet_names()

sheet = wb.get_sheet_by_name(sheet_names[sheet_ind])

r = sheet.max_row

c = sheet.max_column

start_row = 0

for i in range(start_row, r):

cur_row = list(sheet.rows[i])

print(cur_row)
“C:\Users\KVenkataraja\PycharmProjects\Python 教程\venv\Scripts\python.exe“ “C:/Users/KVenkataraja/pycharm项目/Python教程/readexel.py” C:/Users/KVenkataraja/PycharmProjects/Python教程/readexel.py:9: 弃用警告:调用弃用函数get\u sheet\u names(使用 wb.表名)。工作表名称=wb.get\u工作表名称() C:/Users/KVenkataraja/pycharm项目/Python教程/readexel.py:10: 弃用警告:调用弃用函数get\u sheet\u by\u name(使用 wb[图纸名称])。sheet=wb。按名称获取工作表(工作表名称[工作表索引]) 回溯(最近一次调用上次):文件 “C:/Users/KVenkataraja/pycharm项目/Python教程/readexel.py”, 第18行,在 cur_row=list(sheet.rows[i])

TypeError:“生成器”对象不可下标

进程已完成,退出代码为1


sheet.rows
可能(如错误消息所示)是一个行生成器,这就是它不可子脚本化的原因。您应该迭代生成器
工作表.rows

您可以,并且应该像下面的代码片段中那样迭代它:

for row in sheet.rows:
    cur_row = list(row)
    print(cur_row)
或者如果您也需要索引,则使用
枚举

for index, row in enumerate(sheet.rows):
    cur_row = list(row)
    print(cur_row)
    # print(index)

sheet.rows
是一个生成器,您不能像那样请求
i
th行。你的意思是
列表(sheet.rows)[i]
?为什么?没有explanation@AzatIbrakov是的,我只是在编辑我的答案:)觉得需要一些解释。