xlsxファイル300GBを読む必要があります。行数〜10^9。私は1つの列から値を取得する必要があります。ファイルは8列で構成されています。私はできるだけ早くそれをやりたい。非常に大きなxlsxファイルをPythonで読む
from openpyxl import load_workbook
import datetime
wb = load_workbook(filename="C:\Users\Predator\Downloads\logs_sample.xlsx",
read_only=True)
ws = wb.worksheets[0]
count = 0
emails = []
p = datetime.datetime.today()
for row in ws.rows:
count += 1
val = row[8].value
if count >= 200000: break
emails.append(val)
q = datetime.datetime.today()
res = (q-p).total_seconds()
print "time: {} seconds".format(res)
emails = emails[1:]
サイクルには、200.000行を読み取るのに約16秒必要です。時間の複雑さはO(n)です。したがって、10^6の行はほぼ1.5分間読み込まれます。ビットは10^9です。そして、このためには10^3 * 1.5 = 1500分= 25時間待たなければなりません。それはあまりにも悪いです... この問題を解決するために、私を助けてください。
単一のExcel .xlsxワークシートの最大行は、10億ではなく、2^20または1,048,576行にすることができます。タイトルからExcelファイルではないため、制限がないCSVファイルを間違えていると思いました。しかし、あなたは.xlsxを参照します。この壮大なワークブックを見るのが大好きです。行が複数のシートにまたがっている可能性がありますか?ファイルがExcel.exeプログラムではなくコードで構築されているのでしょうか? – Parfait