Я нахожусь в несколько аналогичной ситуации. Не ясно, знаете ли Вы размер блока в байтах; я обычно не делаю, но количество записей (строки), который требуется, известно:
def get_line():
with open('4gb_file') as file:
for i in file:
yield i
lines_required = 100
gen = get_line()
chunk = [i for i, j in zip(gen, range(lines_required))]
Обновление : Спасибо nosklo. Вот то, что я имел в виду. Это почти работает, за исключением того, что это теряет строку 'между' блоками.
chunk = [next(gen) for i in range(lines_required)]
Добивается цели w/o, теряющий любые строки, но это не выглядит очень хорошим.
Извините за размещение программного обеспечения для Windows, но если вы не найдете ничего хорошего для MAC, есть TweakPNG , который на сегодняшний день является лучшим дизассемблером PNG, который я видел .
PNGCrush может удалять метаданные, а также оптимизировать / повторно сжимать растровые изображения.
Поиск png на iUseThis дает длинный список приложения для обрезки png.
У меня установлено ImageOptim , но я не могу вспомнить, действительно ли оно было лучшим из всех. Я пробовал несколько.
Мой ответ на другой вопрос дает короткий сценарий Python, который удаляет все некритические фрагменты. Вам нужно будет загрузить PyPNG, но это всего лишь один файл Python.