Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 17, 2014 11:02:51

trympyrym
Зарегистрирован: 2013-08-13
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

как разрезать большой файл на 2 части

Есть очень большой текстовый файл. В файле есть одна особая строка-маркер. Необходимо разделить файл на 2 части (все, что до маркера, и все, что после). Сохранения исходного файла не требуется.

Сейчас у меня это сделано простейшим построчным копированием:

flag = 0
inputFile = open("inputFile", 'rt')
outputFileFirst = open("outputFileFirst", 'wt')
outputFileSecond = open("outputFileSecond", 'wt')
for line in inputFile:
    flag += is_marker(line)
    if flag:
        outputFileSecond.write(line)
    else:
        outputFileFirst.write(line)

Есть ли способ эту же задачу выполнить быстрее и, желательно, без копирования?

Офлайн

#2 Янв. 17, 2014 12:14:19

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

как разрезать большой файл на 2 части

trympyrym
пускай у вас будет этот код. Напишите второй код, алгоритм такой: построчно ищется нужная строка, запоминается позиция, далее вторую часть пишем в файл (читаем буфером (не строками) исходный файл до конца), далее смещаемся в начало исходного файла, и пишем во другой файл первую часть (читаем исходный файл до запомненной ранее позиции). Как то так.
Потом сравните скорость работы и отпишитесь



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Янв. 17, 2014 14:39:59

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

как разрезать большой файл на 2 части

После копирования лучше просто обрезать файл и переименовать.
http://docs.python.org/2.7/library/stdtypes.html#file.truncate

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version