Чтение car_names.txt
сэкономит вам изрядное количество памяти (действительно очень маленькое по сегодняшним меркам ;-), но это абсолютно не будет быстрее, чем просто выплеснуть его за один прием (в лучшем случае это будет точно то же самое) скорость, возможно, даже немного медленнее, если ваша базовая операционная система и система хранения не справятся с задачей кэширования / буферизации с упреждением чтения. Поэтому я предлагаю:
import fileinput
carnames = open('car_names.txt').readlines()
carnamit = iter(carnames)
skip = False
for line in fileinput.input(['car_descriptions.txt'], True, '.bak'):
if not skip:
print line,
if '@CAR_NAME' in line:
print next(carnamit),
skip = True
else:
skip = False
Так что измерьте скорость этого, и альтернативу, которая делает
carnamit = open('car_names.txt')
в начале, вместо того, чтобы читать все строки в списке, как моя первая версия - держу пари, что первая версия (в той мере, в которой есть измеримая и воспроизводимая разница) окажется быстрее.
Кстати, модуль ввода файлов стандартной библиотеки задокументирован здесь , и это действительно удобный способ выполнить «виртуальную перезапись на месте» текстовых файлов (обычно сохраняя старую версию в качестве резервной копии, на всякий случай - но даже если машина выйдет из строя в середине операции, старая версия данных все равно будет там, так что в некотором смысле «перезапись» работает атомарно по отношению к сбоям машины, приятное небольшое прикосновение; -.)