PythonはExcelファイルの読み取りを高速化します

フランキンセンスキング

Excelドキュメントを読み取り、最初の行に「UPDATED」が含まれているかどうかを確認するスクリプトを作成しました。その場合、行全体を同じタブ名の別のExcelドキュメントに書き込みます。

私のExcelドキュメントは23枚で、各シートに1000行ありますが、これを完了するには15分以上かかります。これをスピードアップする方法はありますか?

マルチスレッドまたはマルチプロセッシングについて考えていましたが、どちらが優れているかわかりません。

更新:私のプログラムの実行に15分かかったという事実は、読み取り専用モードが原因でした。プログラムを削除すると、プログラムの実行に2秒しかかかりませんでした。

import openpyxl
import os
from datetime import datetime

titles = ["Column1", "Column2", "Column3", "Column4", "Column5","Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16"]


def main():
    oldFilePath= os.getcwd() + "\oldFile.xlsx"
    newFilePath= os.getcwd() + "\newFile.xlsx"

    wb = openpyxl.load_workbook(filename=oldFilePath, read_only=True)
    wb2 = openpyxl.Workbook()

    sheets = wb.get_sheet_names()
    sheets2 = wb2.get_sheet_names()

    #removes all sheets in newFile.xlsx
    for sheet in sheets2:
        temp = wb2.get_sheet_by_name(sheet)
        wb2.remove_sheet(temp)

    for tab in sheets:
        print("Sheet: " + str(tab))
        rowCounter = 2

        sheet = wb[tab]
        for row in range(sheet.max_row):
            if sheet.cell(row=row + 1, column=1).value == "": #if cell is empty stop reading
                break
            elif sheet.cell(row=row + 1, column=1).value == "UPDATED":
                if tab not in sheets2:
                    sheet2 = wb2.create_sheet(title=tab)
                    sheet2.append(titles)

                for x in range(1, 17):
                    sheet2.cell(row=rowCounter, column=x).value = sheet.cell(row=row + 1, column=x).value

                rowCounter += 1

                sheets2 = wb2.get_sheet_names()

    wb2.save(filename=newFilePath)


if __name__ == "__main__":
    startTime = datetime.now()
    main()
    print("Script finished in: " + str(datetime.now() - startTime))
チャーリー・クラーク

このような小さなブックの場合、読み取り専用モードを使用する必要はなく、無害に使用することで、自分で問題を引き起こします。を呼び出すたびにws.cell()、openpyxlはワークシートを再度解析します。

したがって、読み取り専用モードの使用を停止するかws.iter_rows()、前の質問でアドバイスしたとおりに使用します。

一般に、何かが遅くなっていると思う場合は、何かを試して最高のものを期待するのではなく、常にプロファイルを作成する必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

openpyxlを使用してExcelファイルの読み取りと書き込みを高速化したい

分類Dev

RでCSVファイルの読み取りを高速化する方法

分類Dev

パンダでファイルの読み取り/書き込みを高速化する方法はありますか?

分類Dev

ファイルの読み取りとオープンを高速化

分類Dev

パンダでのcsvファイルのこの条件付き行の読み取りを高速化しますか?

分類Dev

ファイルからのいくつかの読み取りを高速化するAndroidの方法

分類Dev

Pythonでのデータ読み取りを高速化しますか?

分類Dev

30,000csvファイルの読み取りと操作の高速化

分類Dev

SQLテーブルへのテキストファイルの読み取りを高速化する最良の方法は?

分類Dev

Pythonでの非常に大きなnetcdfファイルの読み取りの高速化

分類Dev

GNU Octaveで大きなファイルの読み取りを高速化するにはどうすればよいですか?

分類Dev

PythonはExcelファイルの1列を読み取りました

分類Dev

openpyxlの読み取りを高速化

分類Dev

Python-Excelファイルを読み取り、出力を別のファイルに出力します

分類Dev

ファイルを読み取ってその内容を返す関数を高速化するにはどうすればよいですか?

分類Dev

例外はファイルの読み取りを停止しますpython

分類Dev

ファイルから方程式のリストを読み取って評価するときにPythonの評価を高速化する

分類Dev

ApachePOI-読み取りはExcelファイルを変更します

分類Dev

FileStreamは遅く、高速な方法で多くのファイルの数バイトを読み取ります

分類Dev

Matlab、fread、複数のデータ型と複数のサンプルレートでファイルの読み取りを高速化

分類Dev

バイナリファイルを読み取り、再利用し、変換するためのより高速な方法はありますか?

分類Dev

PythonはWebURLからファイルを読み取ります

分類Dev

Upload +は、POIを使用してjspのExcelファイルを読み取ります

分類Dev

トランジェントは読み取り操作を高速化しますか?

分類Dev

JavaFileDialogはファイルを参照して読み取ります

分類Dev

Dask read_csvを使用してn行ごとに読み取り、複数のファイルを高速で複数読み取りますか?

分類Dev

C#Excelファイルの読み取りは1行目を無視します

分類Dev

OpenMPIはテキストファイルの読み取りを並列化します

分類Dev

Python列のcsvファイルを読み取りますか?

Related 関連記事

  1. 1

    openpyxlを使用してExcelファイルの読み取りと書き込みを高速化したい

  2. 2

    RでCSVファイルの読み取りを高速化する方法

  3. 3

    パンダでファイルの読み取り/書き込みを高速化する方法はありますか?

  4. 4

    ファイルの読み取りとオープンを高速化

  5. 5

    パンダでのcsvファイルのこの条件付き行の読み取りを高速化しますか?

  6. 6

    ファイルからのいくつかの読み取りを高速化するAndroidの方法

  7. 7

    Pythonでのデータ読み取りを高速化しますか?

  8. 8

    30,000csvファイルの読み取りと操作の高速化

  9. 9

    SQLテーブルへのテキストファイルの読み取りを高速化する最良の方法は?

  10. 10

    Pythonでの非常に大きなnetcdfファイルの読み取りの高速化

  11. 11

    GNU Octaveで大きなファイルの読み取りを高速化するにはどうすればよいですか?

  12. 12

    PythonはExcelファイルの1列を読み取りました

  13. 13

    openpyxlの読み取りを高速化

  14. 14

    Python-Excelファイルを読み取り、出力を別のファイルに出力します

  15. 15

    ファイルを読み取ってその内容を返す関数を高速化するにはどうすればよいですか?

  16. 16

    例外はファイルの読み取りを停止しますpython

  17. 17

    ファイルから方程式のリストを読み取って評価するときにPythonの評価を高速化する

  18. 18

    ApachePOI-読み取りはExcelファイルを変更します

  19. 19

    FileStreamは遅く、高速な方法で多くのファイルの数バイトを読み取ります

  20. 20

    Matlab、fread、複数のデータ型と複数のサンプルレートでファイルの読み取りを高速化

  21. 21

    バイナリファイルを読み取り、再利用し、変換するためのより高速な方法はありますか?

  22. 22

    PythonはWebURLからファイルを読み取ります

  23. 23

    Upload +は、POIを使用してjspのExcelファイルを読み取ります

  24. 24

    トランジェントは読み取り操作を高速化しますか?

  25. 25

    JavaFileDialogはファイルを参照して読み取ります

  26. 26

    Dask read_csvを使用してn行ごとに読み取り、複数のファイルを高速で複数読み取りますか?

  27. 27

    C#Excelファイルの読み取りは1行目を無視します

  28. 28

    OpenMPIはテキストファイルの読み取りを並列化します

  29. 29

    Python列のcsvファイルを読み取りますか?

ホットタグ

アーカイブ