簡體   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