Skip to main content
 首页 » 编程设计

python "IndexError: list index out of range"|目标 : Read 1 excel file & append data to a 2nd excel file

2025年05月04日27webabcd

脚本的目标是从每天从 cron 作业生成的 excel 文件中获取数据,并将该数据附加到“主”excel 文件的底部。

这是我现在的位置:

# Find the most recent excel file created by the cron job & open it. 
 
localtime = time.localtime(time.time()) 
yy = localtime.tm_year 
mm = localtime.tm_mon 
dd = localtime.tm_mday 
 
file_name = 'daily_' + str(yy) + '_' + str(mm) + '_' + str(dd-1) + '.xls' 
file_loc = '/Users/' + file_name 
new_sheet = open_workbook(file_loc, on_demand=True).sheet_by_index(0) 
 
# Grab all the data from the recent cron job file starting at row 2 to avoid 
# including headers. 
 
for row in range(1, new_sheet.nrows): 
    values = [] 
    for col in range(new_sheet.ncols): 
        values.append(new_sheet.cell(row,col).value) 
""" 
The above loop structures the list 'values[]' in a way that the print 
statement of value looks like the below output; which matches the formatting of  
master_file.xlsx: 
 
        2341511  Sports 12112 Dog   324.92 
        71611    Other  18192 Cat   128.17 
        ... 
""" 
 
# Find the excel master file & open it. 
 
sheet = open_workbook('master_file.xlsx').sheet_by_index(0) 
 
# Find the first row that is empty. 
new_row = sheet.nrows + 1 
 
# Append the values[] list to the master file starting at row(new_row) and save 
# the db file. 
 
for row_num, row in enumerate(values, new_row): 
    for col_num, col in enumerate(row): 
        sheet.row(row_num).write(col_num, col) 
 
sheet.save('master_file.xlsx') 

我的回溯错误是:

File "daily.py", line 45, in <module> 
    sheet.row(row_num).write(col_num, col) 
  File "/Users/code/env/lib/python2.7/site-packages/xlrd/sheet.py", line 462, in row 
    for colx in xrange(len(self._cell_values[rowx])) 
IndexError: list index out of range 

如有任何帮助,我们将不胜感激!

请您参考如下方法:

代码的直觉是您实际上并没有在迭代之前向工作表添加一行。

xlrd 看起来不像它实际上具有修改现有工作表的方法。查看这篇可能有帮助的 SO 帖子...

How to add new column and row to .xls file using xlrd