Быстрая запись в файл состояния - PullRequest
1 голос
/ 27 марта 2012

Мой сценарий Python должен записывать состояние в текстовый файл несколько раз в секунду, переопределяя предыдущее содержимое.

fp = open('status.txt', 'w')
fp.write('12983214/23180100')
fp.close()

Как бы вы порекомендовали реализовать это, чтобы минимизировать затрачиваемое здесь время?Вызов командной строки?Отдельная тема?

Ответы [ 2 ]

7 голосов
/ 27 марта 2012

Похоже, вы записываете номер прогресса. Это означает, что ваша строка никогда не станет короче, только дольше.

Из-за этого вам не нужно обрезать его перед каждой записью - просто вернитесь к началу и запишите предыдущее значение. Затем выполните очистку, чтобы данные были доступны всем, кто отслеживает состояние.

Выполнение этого несколько раз в секунду не должно занимать много времени, и это самое простое решение.

fp = open('status.txt', 'w')

#whenever you want to write
fp.seek(0)
fp.write('12983214/23180100')
fp.flush()

#when you're done
fp.close()

Если строка состояния может стать короче, просто добавьте

fp.truncate(0)

до write. Вам все еще нужно seek, потому что усечение не меняет текущую позицию файла.

Все эти методы описаны в встроенных файловых объектах .

1 голос
/ 27 марта 2012

"записать статус в текстовый файл несколько раз в секунду"
Я думаю, что вы можете сохранить экземпляр файла, пока не напишете в него. Теперь, чтобы закрыть файл экземпляр. Перед закрытием вы можете написать много раз.
открывать и закрывать обычно стоит некоторой эффективности.

"переопределение предыдущего контента"
если вы переопределяете предыдущий контент, почему бы не написать окончательный результат в конечное время?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...