0

我想在 GAE 中使用 python xlrd 读取大小为 4 MB 的文件。

我正在从 Blobstore 获取文件。使用的代码如下。

book = xlrd.open_workbook(file_contents=temp_file)
sh = book.sheet_by_index(0)
for col_no in range(sh.ncols):

它给了我 DeadlineExceededError。

 book = xlrd.open_workbook(file_contents=file_data)
 File "/base/data/home/apps/s~appid/app-version.369475363369053908/xlrd/__init__.py", line 416, in open_workbook
  ragged_rows=ragged_rows,
 File "/base/data/home/apps/s~appid/app-version.369475363369053908/xlrd/xlsx.py", line 756, in open_workbook_2007_xml
x12sheet.process_stream(zflo, heading)
 File "/base/data/home/apps/s~appid/app-version.369475363369053908/xlrd/xlsx.py", line 520, in own_process_stream
 for event, elem in ET.iterparse(stream):
 DeadlineExceededError

但我能够读取较小尺寸的文件。

实际上我只需要获取文件的前几行(30 到 50)。除了将其添加为任务并使用通道 API 获取详细信息以获取详细信息而不会导致截止日期错误之外,还有其他方法吗?

我能做些什么来处理这个......?

4

1 回答 1

0

我读了一个大约 1000 行的 excel 文件,它在库中运行良好。我留下一个可能有用的链接https://github.com/cjhendrix/HXLator-SpaceAppsVersion/blob/master/gae/main.py

我看到的代码,列和行的交叉必须在每一行的列表中

例子:

 wb = xlrd.open_workbook(file_contents=inputfile.read())
 sh = wb.sheet_by_index(0)
 for rownum in range(sh.nrows):
   val_row = sh.row_values(rownum)
   #here print element of list
   self.response.write(val_row[1]) #depending for number for columns

问候!!!

于 2013-08-20T00:16:31.447 回答