У меня есть один поток, который записывает строку до конца файла так часто, и я надеялся, что еще один поток прочитан с начала файла а затем удалить то, что он прочитал. Мне нужно, чтобы он был в файле, так что, когда программа закончится, он может забрать, где он остановился. Проблема в том, что я не уверен, как удалить первую строку, а затем обновить файл.Python один поток, записывающий в конец файла и другой поток, считанный с начала файла
ответ
Файлы не работают. Вы можете прочитать файл или записать его, но вы не можете легко удалить первую строку из файла. Вам нужно будет перейти к началу файла и перезаписать его данными из второй и последующих строк, а затем усечь его в конце.
Лучшей альтернативой было бы сохранить список строк в модуле. В этом модуле определите две функции;
- Чтобы добавить строки в конец списка (используя метод
append
). - Второе, чтобы удалить строки из начала списка и вернуть их (используя метод
pop
с 0 в качестве аргумента).
Вы должны добавить третью функцию для записи списка в файл (используя метод writelines
файла). При желании вы можете вызвать эту функцию в обеих других функциях, чтобы список записывался в файл всякий раз, когда он менялся. И последнее, но не менее важное: у вас должна быть функция для загрузки списка строк из файла.
Поскольку вы хотите использовать это из многопоточной программы, этот модуль должен использовать threading.Lock
, чтобы убедиться, что только один поток за раз может изменить список.
Пожалуйста, добавьте код, который вы использовали –