TypeError:“ generator”对象在python

时间:2018-06-26 13:21:48

标签: 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.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   Tutorials \ venv \ Scripts \ python.exe”   “ C:/用户/ KVenkataraja / PycharmProjects / Python教程/readexel.py”   C:/用户/ KVenkataraja / PycharmProjects / Python教程/readexel.py:9:   DeprecationWarning:调用已弃用的函数get_sheet_names(使用   wb.sheetnames)。 sheet_names = wb.get_sheet_names()   C:/用户/ KVenkataraja / PycharmProjects / Python教程/readexel.py:10:   DeprecationWarning:调用已弃用的函数get_sheet_by_name(使用   wb [sheetname])。 sheet = wb.get_sheet_by_name(sheet_names [sheet_ind])   追溯(最近一次通话):文件   “ C:/用户/ KVenkataraja / PycharmProjects / Python教程/readexel.py”,   第18行,在       cur_row = list(sheet.rows [i])

     

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

     

以退出代码1完成的过程

1 个答案:

答案 0 :(得分:2)

sheet.rows可能是(如您的错误消息所暗示的)是行的生成器,这就是为什么它不能下标的原因。您应该遍历生成器sheet.rows

您可以并且应该按照以下代码片段进行迭代:

for row in sheet.rows:
    cur_row = list(row)
    print(cur_row)

或者如果您也想要索引,请使用enumerate

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