kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Почему не работает скрипт удаления строк из txt?

Небольшой код для удаления отработанных ссылок из общего списка:
with open("lots.txt", "r") as f:
    lots = f.readlines()
    print('All lots: {}\nTo removing: {}'.format(len(lots), len(loaded)))
    for url in loaded:
        try:
            lots.remove(url.split(' ')[-1])
            print('Removed: {}'.format(url.split(' ')[-1]))
        except ValueError:
            pass
    with open("upd_lots.txt", "w") as new_f:
        for lot in lots:        
            new_f.write(lot)

>>> print(type(lots))
<class 'list'>
>>> print(type(loaded))
<class 'list'>
>>>

При запуске скрипта в командной строке:
All lots: 7812589
To removing: 63607

Больше ничего: ни ошибок, ни вывода print('Removed: {}'.format(url.split(' ')[-1])).
В диспетчере задач скрипт успешно съел ~1гб ОЗУ и по чуть-чуть крутит процессор в районе 15-17%.
В связи с этим не могу понять: он завис, или просто по какой-то причине не выводится print('Removed: {}'.format(url.split(' ')[-1])). Пробовал как в WPS так и в командной строке - результат одинаковый.

UPD. Добавил в except print('There is no such line: {}'.format(url.split(' ')[-1])) получилось, что не находит строки. Распечатал принтом по одному элементу из lots и loaded - в lots в конце строки спец. символ \n, видимо он и мешает. Только вот не знаю как его убрать, подскажет кто?
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
kshnkvn
@kshnkvn Автор вопроса
yay ✌️ t.me/kshnkvn
Мне нужно было так читать строку:
lots = f.read().split('\n')
readlines() оставляет за собой \n.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы