我正在尝试读取二进制文件,结果令人困惑.
f = open('foo.dat','r')
data = f.read()
print len(data), f.tell()
Run Code Online (Sandbox Code Playgroud)
输出是:
61, 600
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?只读取前61个字节,但文件对象告诉我我在文件的末尾(文件长度为600字节).文件的其余部分发生了什么?
我只是尝试在Matlab中阅读它并且它读得很好所以我很确定数据文件没问题.
该文档提到了阻塞的一些内容:"请注意,在非阻塞模式下,即使没有给出大小参数,也可能返回的数据少于请求的数据." 我是否处于非阻塞模式?这似乎对文件无关紧要.如何切换到阻止模式?
更新 @John Machin - 是的!谢谢!看起来确实是这样.这是输出:
600, 600
'm\x1aN\x16\x8d\x1e\x96\x10h\x1a'
Run Code Online (Sandbox Code Playgroud)
'\ x1a'肯定在那里.
python ×1