以下代码在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
读取原始字节流,默认情况下这些字节流是"二进制"的。