如何在GAE中使用python xlrd读取大文件而不给出DeadlineExceededError

时间:2013-08-14 05:54:55

标签: google-app-engine python-2.7 xlrd

我想在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获取详细信息以获取详细信息而导致截止日期错误之外,还有其他任何方法吗?

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

1 个答案:

答案 0 :(得分: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

问候!!!