Мне нужно создать выходной текстовый файл, удалив первые две строки входного файла.Быстро удалить первые n строк из многих текстовых файлов
На данный момент я использую СЭД "1,2d" input.txt> output.txt
мне нужно сделать это для тысяч файлов, так что я использую Python:
import os
for filename in somelist:
os.system('sed "1,2d" %s-in.txt > %s-out.txt'%(filename,filename))
, но это довольно медленно.
Мне нужно сохранить исходный файл, поэтому я не могу установить его на месте.
Есть ли способ сделать это быстрее? Использование чего-то другого, кроме sed? Возможно, используя какой-то другой язык сценариев, чем python? Стоит ли писать короткую программу на C или файл-запись на диске может быть узким местом?
Один вопрос с помощью os.system() является то, что он запускает новую оболочку каждый цикл что добавляет немного накладных расходов. Запуск непосредственно в петле, например. bash уменьшит накладные расходы немного (но увеличение производительности, вероятно, будет только теоретическим, поскольку дисковый ввод-вывод является ограничивающим фактором, как упоминалось другими) – pafcu
@pafcu: Возможно, это не так теоретически, если файлы были все четыре строки , Я бы предположил, что вы могли бы добиться такого же улучшения, используя 'exec' вместо' system'. Для этого не нужна оболочка. – Cascabel