2017-01-02 2 views
0

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

+0

Пожалуйста, добавьте код, который вы использовали –

ответ

1

Файлы не работают. Вы можете прочитать файл или записать его, но вы не можете легко удалить первую строку из файла. Вам нужно будет перейти к началу файла и перезаписать его данными из второй и последующих строк, а затем усечь его в конце.

Лучшей альтернативой было бы сохранить список строк в модуле. В этом модуле определите две функции;

  • Чтобы добавить строки в конец списка (используя метод append).
  • Второе, чтобы удалить строки из начала списка и вернуть их (используя метод pop с 0 в качестве аргумента).

Вы должны добавить третью функцию для записи списка в файл (используя метод writelines файла). При желании вы можете вызвать эту функцию в обеих других функциях, чтобы список записывался в файл всякий раз, когда он менялся. И последнее, но не менее важное: у вас должна быть функция для загрузки списка строк из файла.

Поскольку вы хотите использовать это из многопоточной программы, этот модуль должен использовать threading.Lock, чтобы убедиться, что только один поток за раз может изменить список.