Python:文件不会读取整个文件,io。FileIO 确实如此 - 为什么?



以下代码在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()

为什么有区别?根据我对这些文档的阅读,它们的性能应该是相同的。

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

尝试

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

FileIO读取原始字节流,默认情况下这些字节流是"二进制"的。

最新更新