Python, удаление строчки в txt

Всех приветствую, я не программист
И мало что понимаю в коде
Хочу сделать программу на python'e

Пример:
Есть txt файл, там например пароли
В каждой строчке по одному паролю
И если пароль меньше 7 символов(включая 7) то он должен удалить эту строчку из txt файла

Как можно это реализовать?
Пытался что-то найти, совмещал всё вместе
Но всё плохо

with codecs.open('users.txt','r',encoding='utf-8-sig') as f1: 
for line in f1: 
  print(line.strip()) 
  stringGET=line.strip() 
  if stringGET=='""': 
    continue 

with codecs.open('FULL LIST.txt','a',encoding='utf-8-sig') as f2: 
  f2.write(stringGET) 
  f2.write('\n') 
  f2.close 

Ответы (1 шт):

Автор решения: Михаил Ребров

В простейшем виде построчное чтение текстового файла выглядит вот так:

Открываем вайл для чтения

file = open("passwords.txt", "r")

Замечание:
В данном случае предполагается, что файл passwords.txt лежит в той же папке, в противном случае указывайте в строке полный путь к файлу, каждый раз когда его открываете.

Запускаем цикл, в котором будем построчно считывать файл

while True:

Считываем строку из файла

line = file.readline()

Если при попытке считать строку из файла мы в ответ получили False значит файл закончился.

Поэтому делаем проверку на окончание файл внутри цикла

if not line:

И если мы достигли конца файла, то мы выходим из цикла с помощью команды

break

далее мы закрываем файл

file.close()

Итого:

file = open("passwords.txt", "r")
while True:
    line = file.readline()
    if not line:
        break

file.close()

Но это только начало, теперь нам нужно отфильтровать эти строки и сформировать новое содержимое файла.

Для того чтобы его было куда складывать перед началом цикла объявляем новую переменную

content = ""

далее: в цикле, после того как мы считали строку из файла нам нужно проверить длину полученной строки

if len(line.strip()) >= 8: 

В данном случае мы установили проверку на длину строки большую либо равную(но точно не меньше!) 8 символов
также стоит обратить внимание на метод .strip(), который мы вызываем на строке
Он удаляет из строки лишние пробелы и прочие невидимые символы с начала и конца строки.
В нашем случае таким способом мы избавились от невидимого символа перевода коретки на новую строку...мы же не хотим чтобы он учавствовал в оценки длины строки, верно?

Далее: если проверка была выполнена и если очищеная от лишних невидимых символов строка не менее 8 символов, то мы прибавляем данную строку в содержимому переменной content

content += line

Оператор += добавляет line к содержимому content
Эта строка эквивалентна этой

content = content + line

В итоге после прохождения цикла в переменной content у нас будут отфильтрованные строки и нам только останется их записать в файл.

Это можно сделать следующим образом

# открываем файл для записи
file = open("passwords.txt", "w")
# записываем значение переменной content в файл
file.write(content)
# закрываем файл
file.close()

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


В итоге:

# чтение и формирование нового содержимого файла
file = open("passwords.txt", "r")
content = ""
while True:
    line = file.readline()
    if len(line.strip()) >= 8:
        content += line
    if not line:
        break
file.close()
# запись нового содержимого в файл
file = open("passwords.txt", "w")
file.write(content)
file.close()

Содержимое файла до запуска

U7m7aP
LJhXg2tE9
g5TXTk
WfguQE4la
0Og0qrG
bMuK1fHVY
FvfybSm
05pYQnC
sRNmuQINg
TnFOWFNPW
1d53o4
z5IKKL
RRIoYrYq
5lg0kpKnE
Z9PVQDHc
phVdjJ
hLOZFVK
PVqLJW0xm
JJvVre
ciX7hoDR

Содержимое файла после запуска

LJhXg2tE9
WfguQE4la
bMuK1fHVY
sRNmuQINg
TnFOWFNPW
RRIoYrYq
5lg0kpKnE
Z9PVQDHc
PVqLJW0xm
ciX7hoDR

как видим, строки которые были меньше 8 символов в длину удалились
как мы того и хотели

→ Ссылка