asyaevloeva
@asyaevloeva

Как прочитать файлы с кириллицей/разными символами?

если пытаюсь сразу прочитать docx файл

f = open("11.docx", "r", encoding='utf-8')
print(f.read())


то при чтении выпадает такая ошибка:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 14: invalid start byte


если пытаюсь сначала переконвертить в txt а потом прочитать,
import docx2txt
import codecs

my_text = docx2txt.process("11.docx")

with codecs.open(my_text, encoding='utf-8') as fin:
    line = next(fin)
    print(type(line))

то такая:
OSError: [Errno 63] File name too long: 'АБВГД 1234567.1234567\n\nБла\n\nблаблабла\n\n\n\n\n\nКакой-то текст тут\n\n...
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
1. Вот что ты ожидал получить, открыв docx просто через open()? Разумеется, ты получаешь содержимое файла... содержимое, а не текст. Потому что docx - это на самом деле zip архив с пачкой xml файлов внутри. Из них можно выколупать текст самостоятельно, но это муторно.

2. Это уже ближе, но серьёзно, включи мозги - у тебя предполагаемое имя файла содержит то, что выглядит как текст документа. Т.е. судя по всему, функция docx2txt.process() возвращает текст документа как есть, строкой. А ты действуешь как будто она пишет его в файл и возвращает имя этого файла. Наверняка в документации к этому модулю её поведение описывается.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы