Python:文件不读取整个文件,io.FileIO确实 - 为什么?

时间:2012-01-30 18:39:45

标签: python io

以下代码在Windows 上的python 2.7.2 中执行,只读取基础文件的一小部分:

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 个答案:

答案 0 :(得分:12)

您需要以二进制模式打开文件,否则read()将在找到的第一个EOF字符处停止。而docx是一个ZIP文件,保证在某处包含这样的字符。

尝试

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

FileIO读取raw bytestreams,默认情况下为“二进制”。