Python: Файл не читает весь файл, io.FileIO - почему? - PullRequest
6 голосов
/ 30 января 2012

Следующий код, выполненный в python 2.7.2 в windows , читает только часть основного файла:

import os

in_file = open(os.path.join(settings.BASEPATH,'CompanyName.docx'))
incontent = in_file.read()
in_file.close()

пока этот код работает нормально:

import io
import os

in_file = io.FileIO(os.path.join(settings.BASEPATH,'CompanyName.docx'))
incontent = in_file.read()
in_file.close()

Почему разница? Из моего чтения документов они должны работать одинаково.

1 Ответ

12 голосов
/ 30 января 2012

Вам нужно открыть файл в двоичном режиме, или read() остановится на первом найденном символе EOF. А docx - это ZIP-файл, который гарантированно содержит где-то такой символ.

Попробуйте

in_file = open(os.path.join(settings.BASEPATH,'CompanyName.docx'), "rb")

FileIO читает необработанные байтовые потоки и по умолчанию они являются "двоичными".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...