繁体   English   中英

嗨,我有一个 python 脚本可以使用 openpyxl 处理 excel 数据,但是在 2500 行之后我收到 Memory 错误。 谁可以帮我这个事?

[英]Hi, I have a python script to work with excel data using openpyxl ,but after 2500 rows i am getting Memory Error. Can anyone help me on this?

我有一个 python 脚本可以使用openpyxl处理 excel 数据,但是在 2500 行之后我收到 Memory 错误。 谁可以帮我这个事?

在这里,我正在写 excel 并同时处理更新的数据。

import openpyxl
import json,ast,xlrd
loc = "primeline_delivery.xlsx"
shee = openpyxl.load_workbook(loc)
sheet=shee.active
n_col=sheet.max_column
n_col_1=n_col+1
for q in range(1,n_col_1):
    if(sheet.cell(row=1,column=q).value=='source_product_attributes'):
        source=q
for i in range(2,sheet.max_row):
    a=sheet.cell(row=i,column=source).value
    if(a!='[""]'):
        a1=ast.literal_eval(a)
        for j in a1:
            j1=ast.literal_eval(j)
            for k in j1.items():
                print(k)
                for x in range(1,n_col_1):

                    t=0
                    if (sheet.cell(row=1,column=x).value ==k[0]):
                        found = x
                        t=t+1
                        sheet.cell(row=i,column=x).value=str(k[1])
                if(t==0):


                     sheet.cell(row=1,column=n_col_1).value=str(k[0])
                     sheet.cell(row=i,column=n_col_1).value=str(k[1])
                     n_col_1 = n_col_1 + 1
                     print(i)

shee.save('test1.xlsx')

代码工作正常,但在 2500 行之后我收到 memory 错误:

回溯(最近一次调用最后):文件“C:\Users\sryasz\PycharmProjects\sel\venv\lib\site-packages\openpyxl\worksheet\worksheet.py”,第 240 行,单元格文件“C:\Users\ sryasz\PycharmProjects\sel\venv\lib\site-packages\openpyxl\worksheet\worksheet.py",第 256 行,在 _get_cell MemoryError 中

在较旧且可能在当前稳定版本openpyxl ,您可以将use_iterators=True传递给load_workbook() 在即将发布的版本中,此功能似乎已被弃用。

Also, optimized modes could help: https://openpyxl.readthedocs.io/en/stable/optimized.html - You could try to first copy your original excel file to a tempporary file, open your initial state as read-only, temporary作为只写,然后迭代只读版本,但对只写版本进行更新,一旦处理完所有数据,关闭两者并将临时只写版本移回原始版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM