Быстрый способ добавить номер строки / строки в текстовый файл
У меня есть файл, который имеет около 12 миллионных строк, каждая строка выглядит так:
0701648016480002020000002030300000200907242058CRLF
То, что я пытаюсь сделать, это добавить номера строк перед данными, числа должны иметь фиксированную длину.
Идея этого заключается в том, чтобы выполнить массовую вставку этого файла в таблицу SQLServer, а затем выполнить с ней определенные операции, которые требуют, чтобы каждая строка имела уникальный идентификатор. Я пытался сделать это на стороне базы данных, но я не смог добиться хорошей производительности (по крайней мере, менее 4'и менее 1' было бы идеально).
Сейчас я пытаюсь найти решение на python, которое выглядит примерно так.
file=open('file.cas', 'r')
lines=file.readlines()
file.close()
text = ['%d %s' % (i, line) for i, line in enumerate(lines)]
output = open("output.cas","w")
output.writelines(str("".join(text)))
output.close()
Я не знаю, сработает ли это, но это поможет мне понять, как это будет работать, и побочные эффекты, прежде чем я продолжу пробовать что-то новое, я также подумал сделать это на C, чтобы лучше контролировать память.
Поможет ли это сделать на языке низкого уровня? Кто-нибудь знает лучший способ сделать это, я уверен, что это было сделано, но я не смог ничего найти.
Спасибо
3 ответа
О боже, не читайте сразу все 12 миллионов строк! Если вы собираетесь использовать Python, по крайней мере, сделайте это так:
file = open('file.cas', 'r')
try:
output = open('output.cas', 'w')
try:
output.writelines('%d %s' % tpl for tpl in enumerate(file))
finally:
output.close()
finally:
file.close()
При этом используется выражение генератора, которое обрабатывает файл по одной строке за раз.
Стефано прав:
$ time cat -n file.cas> output.cas
Используйте время, чтобы увидеть, как быстро. Это будет быстрее, чем python, так как cat - это чистый C-код.