Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 11, 2012 19:34:02

WhiteTiger
Зарегистрирован: 2012-11-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Стереть содержимое файла открытого open()

Доброго времени суток. Есть скрипт, который обрабатывает тысячи слов (считывает по одному из файла). В процессе работы нужно чтоб он в log.txt всегда записывал последнее полученное слово. На мой взгляд каждый раз открывать/записывать/закрывать log.txt - очень затратно в плане времени.
Хочу открыть его в начале работы (fh = open('log.txt','w')), и в конце работы закрыть. Получается что каждый раз нужно записать текущее слово с помощью fh.write(word), при этом затерев уже имеющееся там слово (предыдущее). Можно ли это как-то сделать?

Отредактировано WhiteTiger (Дек. 11, 2012 19:36:41)

Офлайн

#2 Дек. 11, 2012 21:29:11

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Стереть содержимое файла открытого open()

fh.seek(0)
fh.truncate()
fh.write(word)
Стало интересно, насколько затратно открывать каждый раз
import timeit
 
word = "word qwer"
 
def open_each_time():
    with open('open_each_time.txt', 'w') as f:
        f.write(word)
 
fp = open('write_once.txt', 'w')        
def open_once():
    fp.seek(0)
    fp.truncate()
    fp.write(word)
    fp.flush()
     
N = 20000
print 'open each time', timeit.timeit(open_each_time, number=N)
print 'open once', timeit.timeit(open_once, number=N)
open each time 2.0366631034
open once 0.720287523331

Отредактировано reclosedev (Дек. 11, 2012 21:38:00)

Офлайн

#3 Дек. 12, 2012 08:28:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Стереть содержимое файла открытого open()

WhiteTiger
Получается что каждый раз нужно записать текущее слово с помощью fh.write(word), при этом затерев уже имеющееся там слово (предыдущее).
что мешает записать только последнее слово один раз ?



Офлайн

#4 Дек. 13, 2012 12:14:10

WhiteTiger
Зарегистрирован: 2012-11-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Стереть содержимое файла открытого open()

Из-за некоторых обстоятельств работа программы может внезапно прерваться. Чтоб после этого не начинать всё заново и нужно хранить где-то последнее слово.

Офлайн

#5 Дек. 13, 2012 13:06:11

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Стереть содержимое файла открытого open()

ТС ниасилил try-except ?



Офлайн

#6 Дек. 13, 2012 21:14:59

WhiteTiger
Зарегистрирован: 2012-11-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Стереть содержимое файла открытого open()

Завершаться внезапно работа любого софта может не только из за ИС.
Решение найдено, проблемы больше нет.
reclosedev, спасибо, именно то что нужно!

Отредактировано WhiteTiger (Дек. 13, 2012 21:18:25)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version