Python: как получить часть файла по размеру - PullRequest
0 голосов
/ 16 мая 2018

Я хотел бы прочитать только одну часть (не куски) из txt-файла (10 ГБ) со строками и записать их в другой файл. Размер части должен быть ровно 25 МБ.

Я пробовал с linecache.getlines, но это было не очень точно. Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Это уже описано здесь Ленивый метод чтения больших файлов в Python?

def read_in_chunks(file_object, chunk_size=25*1024*1024):
"""Lazy function (generator) to read a file piece by piece.
Default chunk size: 25MB."""
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)
0 голосов
/ 16 мая 2018

Простой способ выполнить разбиение - использовать read (), предполагая, что каждый символ является байтом.

for nameadd in range(10*1024/25):
    f = open('fname.txt')
    saveTxt = f.read(25*(1024**2))
    fSave = open(str(nameadd)+'fname.txt','w')
    fSave.write('%s',saveTxt)
...