В файл выводится неверное количество букв

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

В первом файле написано: 1 1 1 b b b b b

a = open('input.txt','r+')
a.read()
b = open("out.txt","w+")
b.write(str(len([i for i in a if i.isalpha()])))
a.close()
b.close()

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

Автор решения: CrazyElf

В a у вас хэндлер файла. Вы не записали прочтённый файл никуда. И учитесь сразу пользоваться with лучше, чтобы не закрывать файлы вручную. И давать переменным осмысленные имена желательно:

with open('input.txt','r+') as a:
    text = a.read()

with open("out.txt","w+") as b:
    b.write(str(len([i for i in text if i.isalpha()])))

Хотя этот подсчёт можно короче записать:

sum(map(str.isalpha, text))
→ Ссылка
Автор решения: Kekushka
import re


pattern = '[a-zA-Z]+'
with open('input.txt', 'r+', encoding='utf-8') as file:
    line = file.readline()
    a = ''.join(str(x) for x in line)
a = len(re.findall(pattern, a))
with open('output.txt', 'a', encoding='utf-8') as file:
    file.write(str(a))
→ Ссылка