Как дописать что-либо к последней строке файла

Рейтинг: 0Ответов: 2Опубликовано: 27.03.2023

Есть цикл, на каждой итерации, найденные объекты записываются в файл, в конце цикла вычисляется время отработки скрипта и тоже записывается в файл:

start_time = time.time()
for j, box in enumerate(draw_boxes):
    ...
    f.write(f"{image_name_full} - {pred_classes[j]} - {score_percent}\n")

end_time = time.time()
elapsed_time = end_time - start_time
output_str = f"{image_name_full} - {pred_classes[j]} - {score_percent} - {elapsed_time:.2f}\n"
f.write(output_str)

Сейчас в файл записывается:

  • test (151).jpg - JMEN_GREEN - 78%
  • test (151).jpg - JMEN_GREEN - 73%
  • test (151).jpg - KBB_WHITE - 72%
  • test (151).jpg - KBB_ORANGE - 60%
  • test (151).jpg - KBB_ORANGE - 60% - 11.44

Проблема в том, что последняя строка дублируется. Как приписать время последней строчке, вместо её дублирования?

Ответы

▲ 3Принят
start_time = time.time()
...
output_str = (f"{image_name_full} - {pred_classes[j]} - {score_percent}" for j, box in enumerate(draw_boxes))

end_time = time.time()
elapsed_time = end_time - start_time
f.write('\n'.join(output_str) + f" - {elapsed_time:.2f}\n")
▲ 1

Вместо

output_str = f"{image_name_full} - {pred_classes[j]} - {score_percent} - {elapsed_time:.2f}\n"

Написать

output_str = f"{elapsed_time:.2f}\n"