gspread - get_all_values() returns 一个空列表
gspread - get_all_values() returns an empty list
如果我按名称调用 sheet,get_all_values 函数将始终给我一个绝对不为空的 sheet 的空列表。
import gspread
sheet = workbook.worksheet(sheet_name)
all_rows_list = sheet.get_all_values()
唯一一次 get_all_values 似乎 return 应该是如果我执行以下操作:
all_rows_list = workbook.sheet1.get_all_values()
但是上面的方法只对第一个 sheet 有效,对其他的无效,这对于具有更多 sheet 的工作簿来说有点没用。
总是有效的是像
一样逐行阅读
one_row_list = sheet.row_values(1) # first row
但问题是我正在尝试阅读一本包含大量 sheet 的相对较大的工作簿来弄清楚我应该从哪里开始写作,它看起来像逐行读取会非常快速地触发 "RESOURCES EXHAUSTED" 错误。
所以,我是做错了什么还是 get_all_values gspread 损坏了?
编辑:
已添加截图。
gspread
不适用于名称可能被混淆为 A1 表示法中的单元格引用的工作表(如您的情况下的 X101
和 AT8
)。
https://github.com/burnash/gspread/issues/554 是一个较旧的问题,它描述了潜在的问题(该问题的症状不同,但我很确定根本问题是相同的)。
我将复制您自己发现的 解决方法:
ws.range("A1:C"+str(end_row))
That end_row
is usually row_count
of the sheet.
如果我按名称调用 sheet,get_all_values 函数将始终给我一个绝对不为空的 sheet 的空列表。
import gspread
sheet = workbook.worksheet(sheet_name)
all_rows_list = sheet.get_all_values()
唯一一次 get_all_values 似乎 return 应该是如果我执行以下操作:
all_rows_list = workbook.sheet1.get_all_values()
但是上面的方法只对第一个 sheet 有效,对其他的无效,这对于具有更多 sheet 的工作簿来说有点没用。
总是有效的是像
one_row_list = sheet.row_values(1) # first row
但问题是我正在尝试阅读一本包含大量 sheet 的相对较大的工作簿来弄清楚我应该从哪里开始写作,它看起来像逐行读取会非常快速地触发 "RESOURCES EXHAUSTED" 错误。
所以,我是做错了什么还是 get_all_values gspread 损坏了?
编辑:
已添加截图。
gspread
不适用于名称可能被混淆为 A1 表示法中的单元格引用的工作表(如您的情况下的 X101
和 AT8
)。
https://github.com/burnash/gspread/issues/554 是一个较旧的问题,它描述了潜在的问题(该问题的症状不同,但我很确定根本问题是相同的)。
我将复制您自己发现的
ws.range("A1:C"+str(end_row))
Thatend_row
is usuallyrow_count
of the sheet.