Я использую Ленивый метод для чтения больших файлов, чтобы извлечь информацию из текстовых файлов и сохранить ее в базе данных.
def read_in_chunks(file_object, chunk_size=1024):
"""Lazy function (generator) to read a file piece by piece.
Default chunk size: 1k."""
while True:
data = file_object.read(chunk_size)
if not data:
break
yield data
f = open('really_big_file.dat')
for piece in read_in_chunks(f):
process_data(piece)
Проблема в том, что если я изменю process_data (кусок), например:
for data in piece:
data = regex.findall(str(data))
cursor.execute('INSERT INTO table (Title) VALUES (?)', data)
Я буду получать пустое место каждый раз, когда читается новый фрагмент. В этом случае тривиально изменить его на:
for data in piece:
data = regex.findall(str(data))
if (data != ""):
cursor.execute('INSERT INTO table (Title) VALUES (?)', data[1])
Но в информации, которую я извлекаю, есть некоторые действительные "пробелы" (когда в некоторых полях нет определенной информации. Как я могу избежать этого пробела между кусками ??? Я знаю, что это не проблема с Я извлекаю информацию, потому что, если я извлекаю файлы меньшего размера без использования ленивого метода, у меня нет этой проблемы, но у меня есть определенные файлы, которые намного больше, и они работают очень медленно без ленивого метода.
Спасибо