Я почти уверен, что есть, так как я даже смог редактировать / читать из исходных файлов скриптов, которые я запускал, но самой большой проблемой, вероятно, было бы все смещение, которое было бы сделано, если бы вы начали в начале файла. С другой стороны, если вы просматриваете файл и записываете все начальные позиции строк, вы можете затем перейти в обратном порядке, чтобы скопировать строки; как только это будет сделано, вы можете вернуться, взять новые файлы, по одному, и (если они достаточно малы), использовать readlines (), чтобы сгенерировать список, изменить порядок списка, затем перейти к началу файла и перезаписать строки в старом порядке строками в новом.
(Вы должны обрезать файл после прочтения первого блока строк с конца, используя метод truncate()
, который обрезает все данные после текущей позиции файла, если используется без каких-либо аргументов, кроме аргумента объекта файла, предполагая, что вы Вы используете один из классов или подкласс одного из классов из пакета io
для чтения вашего файла. Вам просто нужно убедиться, что текущая позиция файла заканчивается в начале последней строки, которая будет записано в новый файл.)
РЕДАКТИРОВАТЬ: Исходя из вашего комментария о необходимости разделения в правильных закрывающих тегах, вам, вероятно, также придется разработать алгоритм для обнаружения таких тегов (возможно, с использованием метода peek
), возможно, с использованием регулярного выражения .