Когда лучше всего открыть файл для записи? - PullRequest
0 голосов
/ 25 июня 2018

Допустим, мне нужно обработать некоторые данные, а затем записать результаты в некоторый файл.

Было бы лучше сначала открыть файл, затем обработать данные, а затем записать в файл?

with open('file', 'w') as f:
    summary = process_data()
    f.write(summary)

Или лучше открыть файл непосредственно перед записью в него?

summary = process_data()
with open('file', 'w') as f:
    f.write(summary)

Моя интуиция подсказывает мне, что если process_data() требует много памяти и если file велико, могут возникнуть проблемы с первым подходом.

Изменить:

Чтобы уточнить из некоторых ответов, каковы плюсы и минусы каждого подхода?

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Python не имеет с-подобных областей, только объемные конструкции являются блоками def и class, поэтому summary не очищается после окончания блока with во втором примере.

Я могу вспомнить только одно отличие: открытие файла в режиме записи очищает его, поэтому, если process_data занимает много времени внутри блока with - он оставляет файл в пустом состоянии дольше.

Если это не проблема, то это 2 + 3 против 3 + 2.

0 голосов
/ 25 июня 2018

определить лучше ...

Я могу подумать о нескольких аспектах:

  1. Количество времени, которое занимает файл - если этот файл нужен другим пользователям, он будетлучше всего держать его открытым для использования как можно меньше -> процесс до
  2. Чистое кодирование - оператор with лучше, чем open + close -> процесс внутри

Моя интуиция говорит мне, что если process_data () требует много памяти, а файл большого размера, то могут возникнуть проблемы с первым подходом.

Размер file не имеет значения, так как вы не читаете его, вы только открываете его для записи ...

...