Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 9, 2014 19:39:47

R_e_n
Зарегистрирован: 2014-06-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись длинных текстовых файлов

Здравствуйте, столкнулся с такой проблемой:
функция в цикле записывает текст в файл

with open(file_name, 'w') as file: 
     while ... :
         text = ...
         file.write(text)

Если цикл длинный и текст большой, то компьютер через некоторое время зависает. Как можно избежать этого?
while ... :
     with open(file_name, 'a') as file: 
         text = ...
         file.write(text)
Программа работает, все нормально. Но мне не нравится это. Может есть какой-то другой способ? Я думаю есть какая переменная типа “очистка временного буффера”

Отредактировано R_e_n (Июнь 9, 2014 19:40:27)

Офлайн

#2 Июнь 9, 2014 19:41:36

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Запись длинных текстовых файлов

Зависает компьютер, или скрипт до окончания записи?

Офлайн

#3 Июнь 9, 2014 19:46:38

R_e_n
Зарегистрирован: 2014-06-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись длинных текстовых файлов

Сейчас точно не помню, писал не сегодня, а сегодня увидел и решил исправить. Сейчас запустил, жду. По-моему компьютер начинает сильно тормозить.

Кажется нашел, функция flush(). Как только сформулировал “очистить буфер” сразу и нашлось. Извиняюсь, за беспокойство

Отредактировано R_e_n (Июнь 9, 2014 20:14:52)

Офлайн

#4 Июнь 9, 2014 20:20:07

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Запись длинных текстовых файлов

  1. Вместо того, чтобы делать запись в файл внутри цикла, попробуйте сначала нужным образом обработать содержимое файла в памяти, и только потом записать его за один раз.
  • Если у вас Windows, то антивирус может серьезно замедлить файловые операции, вплоть до выпадения в осадок BSOD.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version