Запись файла с кодировкой
Последняя строчка кодируется нормально, а первые две - белиберда
import codecs
name = input("Введіть імя: ")
file2 = codecs.open("file2.txt","w","utf-8")
file2.write("Ваше імя-"+ name)
kyrs = input("Введіть курс: ")
file2 = codecs.open("file2.txt","a","utf-8")
file2.write("\nНазва курсу -"+ kyrs)
vcego = str(len(kyrs) + len(name))
file2 = open("file2.txt","a")
file2.write("\nКількість символів-"+ vcego)
file2 = open("file2.txt","r")
p = file2.read()
print(p)
file2.close()
file2.close()
file2.close()
file2.close()
Ответы (2 шт):
Автор решения: Redume
→ Ссылка
Вы открывали через стандартный open а не codecs тем самым там не было указана кодеровка и в файле получалась "белеберда"
import codecs
name = input("Введіть імя: ")
file2 = codecs.open("file2.txt", "w", "utf-8")
file2.write("Ваше імя-" + name)
kyrs = input("Введіть курс: ")
file2 = codecs.open("file2.txt", "a", "utf-8")
file2.write("\nНазва курсу -" + kyrs)
vcego = str(len(kyrs) + len(name))
file2 = codecs.open("file2.txt", "a", "utf-8") # Изменено
file2.write("\nКількість символів-" + vcego)
file2 = open("file2.txt", "r")
p = file2.read()
print(p)
file2.close()
file2.close()
file2.close()
file2.close()
Автор решения: splash58
→ Ссылка
Не очень понятно, зачем вам codecs, python прекрасно работает с utf-8. Плюс вы много раз открываете file2, а закрываете только в конце. Программа, естественно, не различает ваши file2, так что код становится не очень осмысленным
Проще сделать как-то так:
name = input("Введіть імя: ")
kyrs = input("Введіть курс: ")
vcego = str(len(kyrs) + len(name))
with open("file2.txt", "w", encoding='utf-8') as file2:
file2.write("Ваше імя-"+ name)
file2.write("\nНазва курсу -"+ kyrs)
file2.write("\nКількість символів-"+ vcego)
with open("file2.txt", "r", encoding='utf-8') as file2:
p = file2.read()
print(p)
если убрать encoding в обоих случаях, все тоже будет работать, но файл будет записываться в windows с кодировкой по умолчанию, например, windows-1251 для русской локали