Нижеприведенная программа, которая извлекает некоторые определенные значения столбцов из текстового файла, разделенного разделителем «~», выдает ошибку памяти, когда количество записей в текстовом файле составляет около 6 000 000 PLUS. Однако тот же фрагмент работает для меньшего количества записей в текстовом файле. Я попытался использовать понимание списка, но не смог устранить ошибку памяти. Ниже приведен фрагмент кода:
import os
import csv
print("Analyzing the File!")
tnum = list()
nl = 0
total = list()
fdata = list()
amount = list()
with open(r"C:\Users\aojha\Desktop\20191125\ABC.TXT", "r") as fh:
next(fh)
for line in fh:
line = line.rstrip()
nl+=1
print("Number of records in file are:",nl)
with open(r"C:\Users\aojha\Desktop\20191125\ABC.TXT", "r") as fh:
next(fh)
fdata = [line.split("~") for line in fh]
##print(fdata)
for data in fdata:
tnum.append((data[2][:]).split(" "))
total.append((data[8][:]))
amount.append((data[13][:]))
#print(fdata)
print("Required data from file have been extracted!")}
Образец входных данных имеет следующий формат:
P ~ LNL ~ 22248370 ~ 50 ~ 22248370 ~ 20190916 ~ 20191112 ~ 20190916 ~ 002 ~ I ~ A ~ N ~ 003 ~ 1638 ~ 01 ~ 001 ~ 400023 ~ -1552 ~ 20190916 ~ 0200058 ~ 001 ~ X ~~ TMID ~~~ ~~ 000 ~ 000 ~~ 000 ~ 000 ~ 000 ~~ 000 ~ 000 ~ 0 ~~~~ N ~~~
Полученная ошибка выглядит следующим образом:
> Traceback (most recent call last):
File "C:\Users\aojha\Desktop\Python\Random\Type_Count.py", line 23, in <module>
fdata = [line.split("~") for line in fh]
File "C:\Users\aojha\Desktop\Python\Random\Type_Count.py", line 23, in <listcomp>
fdata = [line.split("~") for line in fh]
MemoryError
with open(r"C:\Users\aojha\Desktop\Type 60\ABC.TXT", "r", buffering=100000) as fh: next(fh) ## fdata = [line.split("~") for line in fh] for line in fh: line = line.rstrip() if line: line = line.split("~") fdata.append(line)
- person Amit O.   schedule 04.02.2020