以下代码在Windows上的 python 2.7.2中执行,只读取基础文件的一小部分:
import os
in_file = open(os.path.join(settings.BASEPATH,'CompanyName.docx'))
incontent = in_file.read()
in_file.close()
Run Code Online (Sandbox Code Playgroud)
而这段代码工作得很好:
import io
import os
in_file = io.FileIO(os.path.join(settings.BASEPATH,'CompanyName.docx'))
incontent = in_file.read()
in_file.close()
Run Code Online (Sandbox Code Playgroud)
为什么不同?从我对文档的阅读中,它们的表现应该相同.
Tim*_*ker 12
您需要以二进制模式打开文件,否则read()将停在它找到的第一个EOF字符处.并且a docx是一个ZIP文件,保证在某处包含这样的字符.
尝试
in_file = open(os.path.join(settings.BASEPATH,'CompanyName.docx'), "rb")
Run Code Online (Sandbox Code Playgroud)
FileIO读取原始字节流,默认情况下为"二进制".